Serf 1.4.0 [2014-xx-xx, from /tags/1.4.0, rxxxx]

  Features
  --------
  Logging that can be configured at runtime (r2220)
  Add flag DISABLE_LOGGING to scons to disable logging at compile time (r2224)
  Add CRL support for OpenSSL (r2333)
  New error code SERF_ERROR_SSL_SETUP_FAILED (r2301)
  New error code SERF_ERROR_CONNECTION_TIMEDOUT (r2184)
  New error codes SERF_ERROR_LINE_TOO_LONG,
    SERF_ERROR_STATUS_LINE_TOO_LONG, SERF_ERROR_RESPONSE_HEADER_TOO_LONG (r2136)
  New error code SERF_ERROR_AUTHN_CREDENTIALS_REJECTED (r2119)
  Implement serf_mmap_peek (r2148)

  Fixes
  -----
  Fix issue #135+#172: handle server-triggered renegotiation
  Fix issue #152: handle compressed responses > 4GB
  Fix issue #147: remove unneeded ISC_REQ_CONFIDENTIALITY flag in SSPI code
  Fix issue #156+#164: C++ comment style breaks C89 build
  Fix problems with NTLM authentication when accessing local server using
    alias hostname on Windows (r1699914)
  Fix incorrect use of bio file handlers (r1699852)
  Initialize OpenSSL when using serf_ssl_load_cert_file outside a serf context
    (r1699848)
  Simplify the ssl bucket code by removing unneeded layer of buffering
    (r1699766)

  Performance improvements
  ------------------------
  Remove pending requests loop from request_or_data_pending() (r1699912)
  Drastically reduce the amount of pollset_add/pollset_remove calls (r1699910)
  Optimize creation of the request/iovec/barrier buckets (r1699907-r1699909)
  Improve performance a tiny bit by ensuring often used struct
    member variables are read from and written to cache. (r1699890)

  Build improvements
  ------------------
  Make unix build work with APR-2 (r1699809)
  Add a version resource to libserf-N.dll on Windows (r1699689)

  Test suite
  ----------
  All tests have been migrated to the MockHTTPinC test framework.
  serf_get changes: add -d/--debug flag, make serf_get accept a client
    certificate and associated password (r1699775)
  Fix issue #157: Segmentation fault in test_ssl_init


Apache Serf 1.3.9 [2016-09-01, from tags/1.3.9, r1758195]
  serf is now Apache Serf; apply header changes (r1700062)
  Fix issue #151: SCons build broken when only one library in ENVPATH
  Fix issue #153: avoid SSPI handle leak
  Fix issue #167: Explicitly use the ANSI version of SSPI
  Fix issue #170: Allow building with Microsoft Visual Studio 2015
  Fix build of 'check' target when using VPATH-style builds (r1699858, ...)
    (builddir != srcdir).
  Resolve a bucket (aka "memory") leak when a request bucket is
    destroyed before it is morphed into an aggregate bucket (r1699791)
  Reset state variables when resetting connection (r1708849)
  Fix types of passed, but unused batons (r1699986, r1699987)
  Fix some usages of the openssl BIO api (r1699852)
  Improve handling of bad data in the response state line. (r1699985)
  Resolve several compiler issues with less common compilers
  Support more overrides via SCons arguments (r1701836, ...)
  Adapt to OpenSSL 1.1.x api (r1750819)


[ Note: All revision numbers for versions prior to 1.3.9 reference the
  original repository on google code.  For more information see:
  https://svn.apache.org/repos/asf/serf/README ]


Serf 1.3.8 [2014-10-20, from /tags/1.3.8, r2441]
  Fix issue #152: CRC calculation error for gzipped http reponses > 4GB.
  Fix issue #153: SSPI CredHandle not freed when APR pool is destroyed.
  Fix issue #154: Disable SSLv2 and SSLv3 as both or broken.


Serf 1.3.7 [2014-08-11, from /tags/1.3.7, r2411]
  Handle NUL bytes in fields of an X.509 certificate. (r2393, r2399)


Serf 1.3.6 [2014-06-09, from /tags/1.3.6, r2372]
  Revert r2319 from serf 1.3.5: this change was making serf call handle_response
    multiple times in case of an error response, leading to unexpected behavior.


Serf 1.3.5 [2014-04-27, from /tags/1.3.5, r2355]
  Fix issue #125: no reverse lookup during Negotiate authentication for proxies.
  Fix a crash caused by incorrect reuse of the ssltunnel CONNECT request (r2316)
  Cancel request if response parsing failed + authn callback set (r2319)
  Update the expired certificates in the test suite.


Serf 1.3.4 [2014-02-08, from /tags/1.3.4, r2310]
  Fix issue #119: Endless loop during ssl tunnel setup with Negotiate authn
  Fix issue #123: Can't setup ssl tunnel which sends Connection close header
  Fix a race condition when initializing OpenSSL from multiple threads (r2263)
  Fix issue #138: Incorrect pkg-config file when GSSAPI isn't configured


Serf 1.3.3 [2013-12-09, from /tags/1.3.3, r2242]
  Fix issue 129: Try more addresses of multihomed servers
  Handle X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE correctly (r2225)
  Return APR_TIMEUP from poll() to enable detecting connection timeouts (r2183)


Serf 1.3.2 [2013-10-04, from /tags/1.3.2, r2195]
  Fix issue 130: HTTP headers should be treated case-insensitively
  Fix issue 126: Compilation breaks with Codewarrior compiler
  Fix crash during cleanup of SSL buckets in apr_terminate() (r2145)
  Fix Windows build: Also export functions with capital letters in .def file
  Fix host header when url contains a username or password (r2170)
  Ensure less TCP package fragmentation on Windows (r2145)
  Handle authentication for responses to HEAD requests (r2178,-9)
  Improve serf_get: add option to add request headers, allow url with query,
     allow HEAD requests (r2143,r2175,-6)
  Improve RFC conformance: don't expect body for certain responses (r2011,-2)
  Do not invoke progress callback when no data was received (r2144)
  And more test suite fixes and build warning cleanups
  SCons-related fixes:
   Fix build when GSSAPI not in default include path (2155)
   Fix OpenBSD build: always map all LIBPATH entries into RPATH (r2156)
   Checksum generation in Windows shared libraries for release builds (2162)
   Mac OS X: Use MAJOR version only in dylib install name (r2161)
   Use both MAJOR and MINOR version for the shared library name (2163)
   Fix the .pc file when installing serf in a non-default LIBDIR (r2191)


Serf 1.3.1 [2013-08-15, from /tags/1.3.1, r2139]
  Fix issue 77: Endless loop if server doesn't accept Negotiate authentication.
  Fix issue 114: ssl/tls renegotiation fails
  Fix issue 120: error with ssl tunnel over proxy with KeepAlive off and
                 Basic authentication.
  Fixed bugs with authentication (r2057,2115,2118)
  SCons-related fixes:
   Fix issue 111: add flag to set custom library path
   Fix issue 112: add soname
   Fix issue 113: add gssapi libs in the serf pc file
   Fix issue 115: Setting RPATH on Solaris broken in SConstruct
   Fix issue 116: scons check should return non-zero exit staths
   Fix issue 121: make CFLAGS, LIBS, LINKFLAGS and CPPFLAGS take a space-
                   separated list of flags.
   Fix issue 122: make scons PREFIX create the folder if it doesn't exist
   Mac OS X: Fix scons --install-sandbox
   Solaris: Fix build with cc, don't use unsupported compiler flags
  Require SCons version 2.3.0 or higher now (for the soname support).


Serf 1.3.0 [2013-07-23, from /tags/1.3.0, r2075]
  Fix issue 83: use PATH rather than URI within an ssltunnel (r1952)
  Fix issue 108: improved error reporting from the underlying socket (r1951)
  NEW: Switch to the SCons build system; retire serfmake, serf.mak, autotools
  Improved Basic and Digest authentication:
    - remember credentials on a per-server basis
    - properly manage authentication realms
    - continue functioning when a server sets KeepAlive: off
  Windows: add support for NTLM authentication
  Improved 2617 compliance: always use strongest authentication (r1968,1971)
  Fixed bugs with proxy authentication and SSL tunneling through a proxy
  Fixed bugs the response parser (r2032,r2036)
  SSL connection performance improvements
  Huge expansion of the test suite


Serf 1.2.1 [2013-06-03, from /tags/1.2.1, r1906]
  Fix issue 95: add gssapi switches to configure (r1864, r1900)
  Fix issue 97: skip mmap bucket if APR_HAS_MMAP is undefined (r1877)
  Fix issue 100: building against an old Windows Platform SDK (r1881)
  Fix issue 102: digest authentication failures (r1885)
  Improve error return values in SSPI authentication (r1804)
  Ensure serf-1.pc is constructed by serfmake (r1865)
  Optimize SPNego authentication processing (r1868)
  Reject certs that application does not like (r1794)
  Fix possible endless loop in serf_linebuf_fetch() (r1816)
  Windows build: dereference INTDIR in serf.mak (r1882)


Serf 1.2.0 [2013-02-22, from /tags/1.2.0, r1726]
  Fixed issue 94: Serf can enter an infinite loop when server aborts conn.
  Fixed issue 91: Serf doesn't handle an incoming 408 Timeout Request
  Fixed issue 80: Serf is not handling Negotiate authentication correctly
  Fixed issue 77: Endless loop if server doesn't accept Negotiate authn
  Fixed issue 93: cleanup-after-fork interferes with parent (r1714)
  Fixed most of issue 89: Support REAL SPNEGO authentication
  Enable Negotiate/Kerberos support for proxy servers.
  Return error when C-L, chunked, gzip encoded response bodies were
    truncated (due to aborted connection) (r1688)
  Add a logging mechanism that can be enabled at compile-time.
  Don't lookup server address if a proxy was configured. (r1706)
  Fix an off-by-one in buffer sizing (r1695)
  Disable SSL compression by default + API to enable it (r1692)
  New serf_connection_get_latency() for estimated network latency (r1689)
  New error code and RFC compliance for the HTTPS tunnel (r1701, r1644)
  Handle EINTR when a user suspends and then backgrounds the app (r1708)
  Minor fixes and test suite improvements.


Serf 1.1.1 [2012-10-04, from /tags/1.1.1, r1657]
  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 memleak when conn. is closed explicitly/due to pool cleanups (r1623)
  Windows: Fix https 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, r1617]
  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
