Update license date on all files. No functional changes.
First pass at ordering results of asynchronous reads. Works if the
reads come in pre-sorted, but so far untested for out-of-order delivery.
Pass Layer 4 network sequence number to higher layers.
Remove vestiges of old signature implementation.
First cut at fixing bug that sometimes caused an "End of Results" PDU to
be delivered before some of the results themselves. This involves
passing a "number of results sent" field in the "End of Results" PDU and
saving that PDU until the indicated number of results are processed....
Updates for Net4 protocol based on later discussions with Griff and
Get basic subscriptions working again.
Snapshot of work on getting subscriptions working under Net4. Still
has several problems.
pdu->msg might be null in gdp_pdufree()
Changes necessary to compile under C++ because it doesn't understand
that (void *) is compatible with other pointer types. This adds a lot
of explicit casts that are not needed in C.
First cut at flattening out protobuf definition. Some changes to data
structure printing (e.g., _gdp_pdu_dump) to get indenting more rational
so as to make reading the output easier.
First cut at running Layer 5 network protocol version 4 over old
(version 3) Layer 4 stack. Substantial parts are unimplemented,
including signature generation and checking, read or subscribe by
timestamp or hash, and others. No asynchronous operations including...
Tentatively working on v3 network protocol.
Fix some glitches with context data during startup/shutdown.
First cut at new net protocol. Compiles, but not yet tested (not even
once --- do not try to run this!).
First cut at separating GCL instances (GINs) from GDP Objects (GOBs).
This is intended to fix some semantic problems with subscriptions. End
users always use GINs (aliased to gdp_gcl_t for now for compatibility),
and there is one GIN for each call to gdp_gcl_open (i.e., no returning...
More work on making helgrind happy. This seems to be pretty close,
maybe worth a try in production.
Make Helgrind annotations work properly for (most?) race conditions.
Cleanup (and hopefully simplification) of assertion subsystem. Lots of
changes, but nothing particularly obtuse.
Add order specification for some leaf locks.
Fix some printf type disagreements.
Update licenses to 2017.
Extensive work on reliability, notably sharing a datum between threads.
Increases reliability, but still not fully tested. Basic things seem to
work though. Note: this may disrupt the replication code.
First cut at using kinder, gentler assertions (mostly in gdp library).
Implement gdp_gcl_read_async. This also fixes some obscure problems
with other asynchronous operations, and tweaks debugging flags to make
it easier to pick out the operations you want to see.
Code & debug output formatting (no semantic changes).
Fix problem raised by issue #16 (threaded applications failed in
unpredicatable ways). The problem was that calls to gdp_gcl_open need to
be single threaded so that there will be a unique name => handle mapping
for GCLs. This puts a mutex around the entire open call; not ideal...
Make many parameters "const" where possible.
Improved error debugging output.
Avoid core dump on ep_crypto_md_clone failure.
Finish putting gdp_buf abstraction in code (it was previously mixed with
libevent evbuffer calls).
Fix problem with inconsistent signatures. Might this be better done by
just eliminating the datum->siglen field? It's implied by the size of
the datum->sig buffer.
Improved debugging in _gdp_pdu_out to try to diagnose signature write
Produce a bit more debugging output for an error we are seeing.
Next take on read-by-timestamp. This version works for read, multiread,
and subscribe. There are still some glitches (e.g., you can't have a
starting timestamp in the future) but fixing these would require major
code restructuring, and besides, you can't specify a starting record...
Extra assertions for strange I/O conditions.
Avoid segfault if the daemon is not running
The Python interface was triggering a segfault if the daemon was not running.
To replicate, create gdp/lang/python/apps/tests.py
import unittest2 as unittest
Fix problem where signature buffer wasn't getting flushed.
Update license. No code changes.
Include copyright in all files. There are scripts to do bulk
replacement of the copyright if desired.
Better commenting on PDU layout
Avoid NULL pointer dereference.
Improved debugging output.
Avoid NULL pointer deref when sending signature in PDU.
Leave space in log headers and index records for extent ids.
Include the name of the log in the log header (in case it gets detached
from its file name).
Leave additional space in log header for possible future use.
Change on-disk log to store signature.
Return that signature on READ commands.
Update reader-test to add a -v flag to print signature info.
Document new interfaces.
Change PDU version number to 3.
Add creation time to logs. This also changes the ep_time_format and
Another signing snapshot: signatures are created and sent but not
checked. Metadata is returned when a GCL is opened. Still have a
problem with reference counting of GCL handles.
Snapshot adding signing. Signatures are computed but not sent or
Cleanup prior to code review: chiefly comments, a bit of code reordering
for better flow.
Significant changes to locking and subscriptions:
* Locks on gdp_req_t are now more extensive to avoid data races.
* Care is given to prevent subscription data being processed before
the subscription itself is in place.
* Move channel pointer into gdp_pdu_t purely as a convenience when...
Finish conversion of "packet" to "PDU". Mostly comments.
Clean up some debugging and error messages.
Do selective file locking to make debug output easier to read.
Somehow the default setting of the routing name got lost.
Implement gdplogd shutdown actions: withdraw advertisements, explicitly
terminate all subscriptions.
Make request-id field required in PDU to make the router code easier.
Unify command and ack/nak processing; unify Associative and LRU GCL
caches; multiple other cleanups.
Snapshot in getting fallbacks for connections to the routing plane.
Still doesn't work, but at least works for the case where the first
address in the list is available. It's also clear that _gdp_req_new
needs substantial work; as it is, gdplogd can handle commands and...
Change data lengths to 4 bytes; if longer PDUs are allowed there are
problems on 32-bit machines.
First cut on the dual-layer model. The old GDP daemon is now the GDP
log daemon; instead of listening to connections it initiates them. This
commit does not include the routing layer.
First cut at new architecture for GDP (separate routing from log layer).
This compiles but does not run.
Adjustments for new PDU format, better error checking, etc.
Change the PDU format again to make a routing module easier. It was
necessary to make the signature size explicit, so you didn't have to
know the details of the signature algorithm to use it.
Arrange to fetch our name (from configuration) or create a name on
Begin change to new on-wire protocol. Involves lots of renaming.
Amazingly it still seems to run.