Serf 1.1.2 [in-progress]
  Enable Negotiate/Kerberos support for proxy servers


Serf 1.1.1 [2012-10-04, from /tags/1.1.1]
  Fixed issue 86: ensure requeued requests are correctly handled. This fixes:
    - infinite loop with multiple connection resets or SIGPIPE errors
    - "connection" hang where we would not re-queue requests that are held after
      we re-connect
  Fixed issue 74: test_all goes in an endless loop
  Fix memory leak when conn. is closed explicitly/due to pool cleanups (r1623)
  Fix for https on Windows: handle connection aborts (r1628..-30,-33,-34,-37)
  Add new error codes for the SSL bucket


Serf 1.1.0 [2012-06-07, from /tags/1.1.0]
  New: serf_bucket_request_set_CL() for C-L based, non-chunked requests
  New: serf_ssl_server_cert_chain_callback_set() for full-chain validation


Serf 1.0.3 [2012-03-20, from /tags/1.0.3, r1586]
  Map more OpenSSL errors into SERF_SSL_CERT_UNKNOWNCA (r1573)


Serf 1.0.2
  Not released.


Serf 1.0.1 [2012-02-15, from /tags/1.0.1, r1569]
  FreeBSD fixes in the test suite (r1560, r1565)
  Minor build fixes


Serf 1.0.0 [2011-07-15, from /tags/1.0.0, r1540]
  Fixed issue 38: enable builds using non-GNU make
  Fixed issue 49: support SSL tunnels for HTTPS via a proxy
  Fixed issue 56: allow Subject Alternative Name, and enable SNI
  Fixed issue 61: include order dependencies
  Fixed issue 66: improved error reporting when creating install dirs
  Fixed issue 71: handle ECONNREFUSED on Windows
  Fixed issue 79: destroy the APR allocator, if we create one
  Fixed issue 81: build failed on APR 0.9.x
  Major performance improvements and bug fixes for SSL buckets/handling (r1462)
  Add a new "iovec" bucket type (r1434)
  Minimize network packet writes based on ra_serf analysis (r1467, r1471)
  Fix out of order issue with multiple priority requests (r1469)
  Work around broken WSAPoll() impl on Windows introduced in APR 1.4.0 (r1506)
  Fix 100% CPU usage with many pipelined requests (r1456)
  Corrected contents of build/serf.def; it now includes bucket types (r1512)
  Removed "snapshot" feature from buckets (r1503)
  Various improvements to the test system
  Various memory leak fixes


Serf 0.7.2 [2011-03-12, from /tags/0.7.2, r1452]
  Actually disable Nagle when creating a connection (r1441)
  Return error when app asks for HTTPS over proxy connection (r1433)


Serf 0.7.1 [2011-01-25, from /tags/0.7.1, r1432]
  Fix memory leak when using SSL (r1408, r1416)
  Fix build for blank apr-util directory (r1421)


Serf 0.7.0 [2010-08-25, from /tags/0.7.0, r1407]
  Fix double free abort when destroying request buckets
  Fix test server in unit test framework to avoid random test failures
  Allow older Serf programs which don't use the new authn framework to still
    handle authn without forcing them to switch to the new framework. (r1401)
  Remove the SERF_DECLARE macros, preferring a .DEF file for Windows
  Barrier buckets now pass read_iovec to their wrapped bucket
  Fix HTTP header parsing to allow for empty header values


Serf 0.6.1 [2010-05-14, from /tags/0.6.1, r1370]
  Generally: this release fixes problems with the 0.4.0 packaging
  Small compilation fix in outgoing.c for Windows builds


Serf 0.6.0
  Not released.


Serf 0.5.0
  Not released.


Serf 0.4.0
  WITHDRAWN: this release misstated itself as 0.5.0; use a later release

  Provide authn framework, supporting Basic, Digest, Kerberos (SSPI, GSS),
    along with proxy authn using Basic or Digest
  Added experimental listener framework, along with test_server.c
  Improvements and fixes to SSL support, including connection setup changes
  Experimental support for unrequested, arriving ("async") responses
  Experimental BWTP support using the async arrival feature
  Headers are combined on read (not write), to ease certian classes of parsing
  Experimental feature on aggregate buckets for a callback-on-empty
  Fix the bucket allocator for when APR is using its pool debugging features
  Proxy support in the serf_get testing utility
  Fix to include the port number in the Host header
  serf_get propagates errors from the response, instead of aborting (Issue 52)
  Added serf_lib_version() for runtime version tests


Serf 0.3.1 [2010-02-14, from /tags/0.3.1, r1322]
  Fix loss of error on request->setup() callback. (Issue 47)
  Support APR 2.x. (Issue 48)
  Fixed slowdown in aggregate bucket with millions of child buckets
  Avoid hang in apr_pollset_poll() by unclosed connections after fork()


Serf 0.3.0 [2009-01-26, from /tags/0.3.0, r1217]
  Support LTFLAGS override as a config-time env. variable (Issue 44)
  Fix CUTest test harness compilation on Solaris (Issue 43)
  Fix small race condition in OpenSSL initialization (Issue 39)
  Handle content streams larger than 4GB on 32-bit OSes (Issue 41)
  Fix test_ssl.c compilation with mingw+msys
  Fix conn close segfault by explicitly closing conn when pool is destroyed
  Expose the depth of the SSL certificate so the validator can use that info
  Fix socket address family issue when opening a connection to a proxy
  Provide new API to take snapshots of buckets
  Implement snapshot API for simple and aggregate buckets
  Build with bundled apr and apr-util VPATH builds
  Build with bundled OpenSSL builds


Serf 0.2.0 [2008-06-06, from /tags/0.2.0, r1189]
  Enable use of external event loop: serf_create_context_ex
  Enable adding new requests at the beginning of the request queue
  Handle 'Connection:close' headers
  Enable limiting the number of outstanding requests
  Add readline function to simple buckets
  Concatenate repeated headers using comma as separator, as per RFC 2616,
    section 4.2. (Issue 29)
  Add proxy server support
  Add progress feedback support. (Issue 11)
  Provide new API to simplify use of proxy and progress feedback support
  Add callback to validate SSL server certificates. (Issue 31)
  Add new test framework
  Send current version string in the test programs (Issue 21)
  Bugfixes:
     Fix segfault with epoll when removing a NULL socket
     Reset OpenSSL thread-safety callbacks when apr_terminate() called
     Do not remove the socket from the pollset on pool cleanup
     Do not issue double close on skt w/second one being close(-1) (Issue 33)


Serf 0.1.2 [2007-06-18, from /tags/0.1.2, r1115]
  Enable thread-safety with OpenSSL (Issue 19)
  Teach serfmake to install headers into include/serf-0
  Be more tolerant when servers close the connection without telling us
  Do not open the connection until we have requests to deliver
  Fix serfmake to produce the library that corresponds to the minor version
  Fix a memory leak with the socket bucket (Issue 14)
  Fix uninitialized branch in serf_spider (Issue 15)


Serf 0.1.1 [2007-05-12, from /tags/0.1.1, r1105]
  Add SSL client certificate support
  Implement optimized iovec reads for header buckets
  Fix up 'make clean' and 'make distclean' (Issues 9, 10)
  Add SERF_VERSION_AT_LEAST macro
  Remove abort() calls (Issue 13)


Serf 0.1.0 [2006-12-14, from /tags/0.1.0, r1087]
  Initial packaged release
