What’s New

cpp-netlib 0.12

  • Added a code of conduct.
  • Add TLS SNI hostname support in the HTTP Client options.
  • Changes based on Coverity reports.
  • Replace std::bind with lambdas.
  • Use std::shared_ptr instead of boost::shared_ptr.
  • Use standalone Asio instead of Boost.Asio.
  • No Boost library (shared or static) dependencies.
  • Use doxygen for documentation, integrated with Breathe to Sphinx.
  • Require C++11 for builds, removes support for non-C++11 compilers.
  • Update documentation for hello_world_server
  • Use googletest for tests
  • Fix XCode-generated debug binaries caused by URI parser complexity
  • Remove synchronous client implementation.
  • Remove support for connection keepalive (only supported in synchronous client).
  • Disable SSLv3 by default.
  • Use sanitisers in continuous integration (address and thread sanitiser).
  • Update minimum Boost to 1.57. Always use shared libs from Boost.

cpp-netlib 0.11


  • Support a source_port setting for connections made by the client per-request.
  • Allow using cpp-netlib without OpenSSL.
  • Fix build breakage for Visual Studio 2015.
  • Add more options for HTTP client use of SSL/TLS options/ciphers.
  • Made client_get_timeout_test less flaky.
  • Fixes to URI encoding issues with multibyte strings.
  • Make cpp-netlib not crash on unstable networks.
  • Allow parsing empty query parameters (#499).
  • CMake build changes to simplify dependencies on cppnetlib-client-connections.
  • Handle EOF correctly (#496).
  • Fix fileserver example to chunk data correctly.
  • Copy hostname to avoid dangling reference to a temporary request object. (#482)
  • Catch exceptions in parse_headers to avoid propagating issues in parsing upwards.
  • Fix some GCC warnings on signed/unsigned comparison.
  • Support environment variable-based peer verification (via OpenSSL).
  • Support IPv6 connections.
  • Support certificate-based verification, and option to always verify hosts.


  • Add support for request timeouts.
  • Build configuration fixes.
  • Support for Travis CI in-project config.
  • Make the response parser more flexible to support older/ad-hoc servers that don’t have standard format responses.
  • Fix some instability in the client destructor.
  • MSVC 2010 specific fixes.


  • Fix thread leak in DNS resolution failure (#245)
  • Remove unsupported client_fwd.hpp header (#277)
  • Remove support for header-only usage (#129) – this means that the BOOST_NETWORK_NO_LIB option is no longer actually supported.
  • Deprecate Synchronous Client implementations (#279)
  • Support streaming body chunks for PUT/POST client requests (#27)
  • Fix non-case-sensitive header parsing for some client tags (#313)
  • Remove unsupported Jamfiles from the whole project (#316)
  • Add make install for Linux and OS X (#285)
  • Fix incorrect Body processing (#69)
  • Support chunked transfer encoding from HTTP responses (#86)
  • Make OS X Clang builds use C++11 and libc++.
  • Update Boost requirement to 1.54.0.
  • Experimental Base64 encoding/decoding library (#287)
  • Known test failure: OS X Xcode Clang 5.0 + Boost 1.54.0 + libc++ don’t play well with Boost.Serialization issues, mitigate test breakage but cpp-netlib-utils_base64_test still fails in this platform. (#287)
  • Provide a client option to always validate peers for HTTPS requests made by the client. (#349)
  • Back-port fix for #163 for improved URI parsing.
  • Added support for client-side certificates and private keys (#361).

cpp-netlib 0.10


  • Documentation updates (#182, #265, #194, #233, #255)
  • Fix issue with async server inadvertently stopping from listening when accepting a connection fails. (#172)
  • Allow overriding and ultimately removing defaulted headers from HTTP requests. (#263)
  • Add -Wall to the base rule for GCC builds. (#264)
  • Make the server implementation throw on startup errors. (#166)


  • Added support for more HTTP status codes (206, 408, 412, 416, 507).
  • Refactored the parser for chunked encoding.
  • Fixed parsing chunked encoding if the response body has <chunk>CLRF<hex>CLRF<data>.
  • Added librt dependency on Linux.
  • Check the callback in the asynchronous client before calling it.
  • Fixed issues #110, #168, #213.

cpp-netlib 0.9


  • Removed dependency on Boost.Parameter from HTTP client and server.
  • Fixed for Clang error on Twitter example.
  • Added source port to the request (HTTP server).
  • Updated CMake config for MSVC 2010/2012.
  • Now support chunked content encoding in client response parsing.
  • Fixed bug with client not invoking callback when a request fails.


  • Lots of URI fixes.
  • Fixed async_server’s request handler so it doesn’t make copies of the supplied handler.
  • Fix for issue #73 regarding SSL connections ending in short read errors.
  • Final C++03-only release.


  • URI, HTTP client and HTTP server are now built as static libraries (libcppnetlib-uri.a, libcppnetlib-client-connections.a and libcppnetlib-server-parsers.a on Linux and cppnetlib-uri.lib, cppnetlib-client-connections.lib and cppnetlib-server-parsers.lib on Windows).
  • Updated URI parser.
  • A new URI builder.
  • URI support for IPv6 RFC 2732.
  • Fixed issues #67, #72, #78, #79, #80, #81, #82, #83.
  • New examples for the HTTP client, including an Atom feed, an RSS feed and a very simple client that uses the Twitter Search API.


  • Critial bug fixes to v0.9.1.


  • Introduced macro BOOST_NETWORK_DEFAULT_TAG to allow for programmatically defining the default flag to use throughout the compilation unit.
  • Support for streaming body handlers when performing HTTP client operations. See documentation for HTTP client interface for more information.
  • Numerous bug fixes from v0.9.0.
  • Google, Inc. contributions.


  • IMPORTANT BREAKING CHANGE: By default all compile-time heavy parser implementations are now compiled to external static libraries. In order to use cpp-netlib in header-only mode, users must define the preprocessor macro BOOST_NETWORK_NO_LIB before including any cpp-netlib header. This breaks code that relied on the version 0.8.x line where the library is strictly header-only.
  • Fix issue #41: Introduce a macro BOOST_NETWORK_HTTP_CLIENT_DEFAULT_TAG which makes the default HTTP client use tags::http_async_8bit_udp_resolve as the tag.
  • Fix issue #40: Write the status line and headers in a single buffer write instead of two writes.
  • More consistent message API for client and server messages (request and response objects).
  • Refactoring of internal implementations to allow better separation of concerns and more manageable coding/documentation.
  • Client and server constructors that support Boost.Parameter named parameters.
  • Client and server constructors now take in an optional reference to a Boost.Asio io_service to use internally.
  • Documentation updates to reflect new APIs.

cpp-netlib 0.8

  • Updates to URI unit tests and documentation.
  • More documentation, covering the HTTP Client and HTTP Server APIs
  • Asynchronous HTTP Server that now supports running request handlers on a different thread pool.
  • An initial thread pool implementation, using Boost.Asio underneath.
  • Adding a ready(...) wrapper to check whether a response object returned by the asynchronous client in 0.7 already has all the parts available.
  • Some attempts at lowering compile time costs.

cpp-netlib 0.7

  • Radical documentation overhaul
  • Asynchronous HTTP client
  • Tag dispatch overhaul, using Boost.MPL
  • HTTP Client Facade refactoring
  • Bug fixes for HTTP 1.1 response parsing
  • Minimized code repetition with some header macro’s
  • Configurable HTTPS support in the library with BOOST_NETWORK_ENABLE_HTTPS

cpp-netlib 0.6

  • Many fixes for MSVC compiler

cpp-netlib 0.5

  • An embeddable HTTP 1.1 server
  • An HTTP 1.1 client upgraded to support HTTPS
  • An updated URI parser implementation
  • An asynchronous HTTP 1.1 client
  • An HTTP 1.1 client that supports streaming function handlers