Skip to content

WebSocket++/0.3.0

Compare
Choose a tag to compare
@zaphoyd zaphoyd released this 09 Aug 19:14
· 408 commits to master since this release
  • Feature: Adds start_perpetual and stop_perpetual methods to asio transport
    These may be used to replace manually managed asio::io_service::work objects
  • Feature: Allow setting pong and handshake timeouts at runtime.
  • Feature: Allows changing the listen backlog queue length.
  • Feature: Split tcp init into pre and post init.
  • Feature: Adds URI method to extract query string from URI. Thank you Banaan
    for code. #298
  • Feature: Adds a compile time switch to asio transport config to disable
    certain multithreading features (some locks, asio strands)
  • Feature: Adds the ability to pause reading on a connection. Paused connections
    will not read more data from their socket, allowing TCP flow control to work
    without blocking the main thread.
  • Feature: Adds the ability to specify whether or not to use the SO_REUSEADDR
    TCP socket option. The default for this value has been changed from true to
    false.
  • Feature: Adds the ability to specify a maximum message size.
  • Feature: Adds close::status::get_string(...) method to look up a human
    readable string given a close code value.
  • Feature: Adds connection::read_all(...) method to iostream transport as a
    convenience method for reading all data into the connection buffer without the
    end user needing to manually loop on read_some.
  • Improvement: Open, close, and pong timeouts can be disabled entirely by
    setting their duration to 0.
  • Improvement: Numerous performance improvements. Including: tuned default
    buffer sizes based on profiling, caching of handler binding for async
    reads/writes, non-malloc allocators for read/write handlers, disabling of a
    number of questionably useful range sanity checks in tight inner loops.
  • Improvement: Cleaned up the handling of TLS related errors. TLS errors will
    now be reported with more detail on the info channel rather than all being
    tls_short_read or pass_through. In addition, many cases where a TLS short
    read was in fact expected are no longer classified as errors. Expected TLS
    short reads and quasi-expected socket shutdown related errors will no longer
    be reported as unclean WebSocket shutdowns to the application. Information
    about them will remain in the info error channel for debugging purposes.
  • Improvement: start_accept and listen errors are now reported to the caller
    either via an exception or an ec parameter.
  • Improvement: Outgoing writes are now batched for improved message throughput
    and reduced system call and TCP frame overhead.
  • Bug: Fix some cases of calls to empty lib::function objects.
  • Bug: Fix memory leak of connection objects due to cached handlers holding on to
    reference counted pointers. #310 Thank you otaras for reporting.
  • Bug: Fix issue with const endpoint accessors (such as get_user_agent) not
    compiling due to non-const mutex use. #292 Thank you logofive for reporting.
  • Bug: Fix handler allocation crash with multithreaded io_service.
  • Bug: Fixes incorrect whitespace handling in header parsing. #301 Thank you
    Wolfram Schroers for reporting
  • Bug: Fix a crash when parsing empty HTTP headers. Thank you Thingol for
    reporting.
  • Bug: Fix a crash following use of the stop_listening function. Thank you
    Thingol for reporting.
  • Bug: Fix use of variable names that shadow function parameters. The library
    should compile cleanly with -Wshadow now. Thank you giszo for reporting. #318
  • Bug: Fix an issue where set_open_handshake_timeout was ignored by server
    code. Thank you Robin Rowe for reporting.
  • Bug: Fix an issue where custom timeout values weren't being propagated from
    endpoints to new connections.
  • Bug: Fix a number of memory leaks related to server connection failures. #323
    #333 #334 #335 Thank you droppy and aydany for reporting and patches.
    reporting.
  • Compatibility: Fix compile time conflict with Visual Studio's MIN/MAX macros.
    Thank you Robin Rowe for reporting.
  • Documentation: Examples and test suite build system now defaults to clang on
    OS X