Release 2.1.1
2008-04-30 Andrew Kornev <akornev@users.sourceforge.net>

    * changed the distributino package name to "c-client-src"
    
Release 2.1.0
2008-04-30 Andrew Kornev <akornev@users.sourceforge.net>

    * added the client latency diagnostics; the client prints a warning when the
      reponse latency exceeds 20ms

    * modified logging format to report the znode path for which the zookeeper 
      operation is called

    * fixed a minor bug where error messages were missing for some of the newer 
      zookeeper error codes (ZCLOSING and ZNOTHING).

    * improved logging by adding the XID to the message to make it easy to match
      requests to responses

    * fixed the bug causing sporadic session termination and timeouts

    * added a new return code to zookeeper_process() -- ZNOTHING -- 
      that indicates that the socket has no more data to read

    * more unit tests added    

Release 1.1.3
2008-02-07 Andrew Kornev <akornev@users.sourceforge.net>

    * get_xid() is not thread-safe (xid initialization race condition 
      in the multi-threaded mode).
    
    * the I/O thread doesn’t automatically terminate on AUTH_FAILURE and 
      SESSION_EXPIRED events.
      
    * all session events should be processed on the completion thread. 
    
    * PING operation doesn’t atomically enqueue the completion and 
      send buffers like other operations do.
      
    * corrected zookeeper_init() doxygen docs.
    
    * new unit tests added.
      

Release 1.1.2
2008-01-24 Andrew Kornev <akornev@users.sourceforge.net>

    * fixed a race condition caused by the code in zookeeper_process()
      and free_completions() setting sc->complete to 1 without proper
      synchronization;

    * fixed zoo_get() not updating buffer_len value with the actual
      buffer length on return; added missing enter_critical/leave_critical
      calls to the async ZK operations.

    * Replaced select() with poll() to fix the problem with the FD_SET
      macro causing stack corruption for FDs higher than 1024

    * Added zoo_set_log_stream() to the public API. The function allows
      applications to specify a different log file.

    * Removed unused declarations from zookeeper.h (ACL related)

    * changed zoo_get() signature to take a pointer to buffer length.
      The function sets the parameter to the actual data length upon return.

    * the watcher callback now takes the zhandle as its first parameter. This
      is to avoid a race condition in the multi-threaded client when a watcher
      is called before zookeeper_init() has returned.

    * fixed zookeeper_close() resource leaks and race conditions,
      fixed the race condition causing xid mismatch.

    * added support for cppunit, added new targets: "check" and "run-check"
      to build and run unit tests.

    * Changed the signature of zookeeper_init(): it now takes a context pointer
      as a parameter. This is to avoid a race condition in the multi-threaded client.

    * Using a self-pipe rather than SIGUSR1 to wake up select() in the I/O thread

    * Added the doxygen target to the autoconf scripts

    * Pulled out the logging functionality from zookeeper.c to zk_log.c/.h.
      Fixed a minor issue with PING responses being unnecessarily put on
      the completion queue rather than simply dropped. Make use of DLL_EXPORT
      symbol for building shared lib on cygwin.

    * Implemented new Zookeeper operation sync() to flush the leader channel
      to ensure that all updates have reached the followers.

    * Synchronous methods not being handled properly on disconnect

    * breed: fixed an incorrect parameter passed to zookeeper API by
      the Sync API wrapper functions

    * breed: the set and delete commands now support both Sync and Async API.
      Prefix the command name with an 'a' to call the Async API: aset, adelete

    * Make sure mutexes and condition variables are properly initialized
      and destroyed

    * Fixed zookeeper_close() causing core dumps with mt_adaptor


Release 1.0.0
2007-11-27 Andrew Kornev <akornev@users.sourceforge.net>

    * configure.ac and Makefile.am added support for GNU autotools

    * recordio.c/.h updated jute IO routines to use bit-explicit integer types
      (int32_t vs. int, and int64_t vs. long long)

    * README rough draft