4 - Bug: Fixes an issue where some frame data was counted against the max header
5 size limit, resulting in connections that included a lot of frame data
6 immediately after the opening handshake to fail.
7 - Bug: Fix a type in the name of the set method for `max_http_body_size`. #406
8 Thank you jplatte for reporting.
11 - BREAKING UTILITY CHANGE: Deprecated methods `http::parser::parse_headers`,
12 `http::response::parse_complete`, and `http::request::parse_complete` have
14 - Security: Disabled SSLv3 in example servers.
15 - Feature: Adds basic support for accessing HTTP request bodies in the http
17 - Feature: Adds the ability to register a shutdown handler when using the
18 iostream transport. This provides a clean interface for triggering the shut
19 down of external sockets and other cleanup without hooking in to higher level
21 - Feature: Adds the ability to register a write handler when using the iostream
22 transport. This handler can be used to handle transport output in place of
23 registering an ostream to write to.
24 - Feature: Adds a new logging policy that outputs to syslog. #386 Thank you Tom
25 Hughes for submitting the initial version of this policy.
26 - Improvement: Message payload logging now prints text for text messages rather
28 - Improvement: Overhaul of handshake state machine. Should make it impossible
29 for exceptions to bubble out of transport methods like `io_service::run`.
30 - Improvement: Overhaul of handshake error reporting. Fail handler error codes
31 will be more detailed and precise. Adds new [fail] and [http] logging channels
32 that log failed websocket connections and successful HTTP connections
33 respectively. A new aggregate channel package, `alevel::access_core`, allows
34 enabling connect, disconnect, fail, and http together. Successful HTTP
35 connections will no longer trigger a fail handler.
36 - Improvement: Ability to terminate connection during an http handler to cleanly
37 suppress the default outgoing HTTP response.
38 - Documentation: Add Sending & Receiving Messages step to chapter one of the
39 `utility_client` tutorial. Update `utility_client` example to match.
40 - Cleanup: Removes unused files & STL includes. Adds required STL includes.
41 Normalizes include order.
42 - Bug: Fixes a fatal state error when a handshake response is completed
43 immediately after that handshake times out. #389
44 - Bug: MinGW fixes; C++11 feature detection, localtime use. #393 Thank you
45 Schebb for reporting, code, and testing.
46 - Bug: Fixes an issue where `websocketpp::exception::what()` could return an out
47 of scope pointer. #397 Thank you fabioang for reporting.
48 - Bug: Fixes an issue where endpoints were not reset properly after a call to
49 `endpoint::listen` failed. #390 Thank you wyyqyl for reporting.
52 - BREAKING API CHANGE: All WebSocket++ methods now throw an exception of type
53 `websocketpp::exception` which derives from `std::exception`. This normalizes
54 all exception types under the standard exception hierarchy and allows
55 WebSocket++ exceptions to be caught in the same statement as others. The error
56 code that was previously thrown is wrapped in the exception object and can be
57 accessed via the `websocketpp::exception::code()` method.
58 - BREAKING API CHANGE: Custom logging policies have some new required
59 constructors that take generic config settings rather than pointers to
60 std::ostreams. This allows writing logging policies that do not involve the
61 use of std::ostream. This does not affect anyone using the built in logging
63 - BREAKING UTILITY CHANGE: `websocketpp::lib::net::htonll` and
64 `websocketpp::lib::net::ntohll` have been prefixed with an underscore to avoid
65 conflicts with similarly named macros in some operating systems. If you are
66 using the WebSocket++ provided 64 bit host/network byte order functions you
67 will need to switch to the prefixed versions.
68 - BREAKING UTILITY CHANGE: The signature of `base64_encode` has changed from
69 `websocketpp::base64_encode(unsigned char const *, unsigned int)` to
70 `websocketpp::base64_encode(unsigned char const *, size_t)`.
71 - BREAKING UTILITY CHANGE: The signature of `sha1::calc` has changed from
72 `websocketpp::sha1::calc(void const *, int, unsigned char *)` to
73 `websocketpp::sha1::calc(void const *, size_t, unsigned char *)`
74 - Feature: Adds incomplete `minimal_server` and `minimal_client` configs that
75 can be used to build custom configs without pulling in the dependencies of
76 `core` or `core_client`. These configs will offer a stable base config to
77 future-proof custom configs.
78 - Improvement: Core library no longer has std::iostream as a dependency.
79 std::iostream is still required for the optional iostream logging policy and
81 - Bug: C++11 Chrono support was being incorrectly detected by the `boost_config`
82 header. Thank you Max Dmitrichenko for reporting and a patch.
83 - Bug: use of `std::put_time` is now guarded by a unique flag rather than a
84 chrono library flag. Thank you Max Dmitrichenko for reporting.
85 - Bug: Fixes non-thread safe use of std::localtime. #347 #383
86 - Compatibility: Adjust usage of std::min to be more compatible with systems
87 that define a min(...) macro.
88 - Compatibility: Removes unused parameters from all library, test, and example
89 code. This assists with those developing with -Werror and -Wunused-parameter
91 - Compatibility: Renames ntohll and htonll methods to avoid conflicts with
92 platform specific macros. #358 #381, #382 Thank you logotype, unphased,
94 - Cleanup: Removes unused functions, fixes variable shadow warnings, normalizes
95 all whitespace in library, examples, and tests to 4 spaces. #376
98 - Feature: Adds `start_perpetual` and `stop_perpetual` methods to asio transport
99 These may be used to replace manually managed `asio::io_service::work` objects
100 - Feature: Allow setting pong and handshake timeouts at runtime.
101 - Feature: Allows changing the listen backlog queue length.
102 - Feature: Split tcp init into pre and post init.
103 - Feature: Adds URI method to extract query string from URI. Thank you Banaan
105 - Feature: Adds a compile time switch to asio transport config to disable
106 certain multithreading features (some locks, asio strands)
107 - Feature: Adds the ability to pause reading on a connection. Paused connections
108 will not read more data from their socket, allowing TCP flow control to work
109 without blocking the main thread.
110 - Feature: Adds the ability to specify whether or not to use the `SO_REUSEADDR`
111 TCP socket option. The default for this value has been changed from `true` to
113 - Feature: Adds the ability to specify a maximum message size.
114 - Feature: Adds `close::status::get_string(...)` method to look up a human
115 readable string given a close code value.
116 - Feature: Adds `connection::read_all(...)` method to iostream transport as a
117 convenience method for reading all data into the connection buffer without the
118 end user needing to manually loop on `read_some`.
119 - Improvement: Open, close, and pong timeouts can be disabled entirely by
120 setting their duration to 0.
121 - Improvement: Numerous performance improvements. Including: tuned default
122 buffer sizes based on profiling, caching of handler binding for async
123 reads/writes, non-malloc allocators for read/write handlers, disabling of a
124 number of questionably useful range sanity checks in tight inner loops.
125 - Improvement: Cleaned up the handling of TLS related errors. TLS errors will
126 now be reported with more detail on the info channel rather than all being
127 `tls_short_read` or `pass_through`. In addition, many cases where a TLS short
128 read was in fact expected are no longer classified as errors. Expected TLS
129 short reads and quasi-expected socket shutdown related errors will no longer
130 be reported as unclean WebSocket shutdowns to the application. Information
131 about them will remain in the info error channel for debugging purposes.
132 - Improvement: `start_accept` and `listen` errors are now reported to the caller
133 either via an exception or an ec parameter.
134 - Improvement: Outgoing writes are now batched for improved message throughput
135 and reduced system call and TCP frame overhead.
136 - Bug: Fix some cases of calls to empty lib::function objects.
137 - Bug: Fix memory leak of connection objects due to cached handlers holding on to
138 reference counted pointers. #310 Thank you otaras for reporting.
139 - Bug: Fix issue with const endpoint accessors (such as `get_user_agent`) not
140 compiling due to non-const mutex use. #292 Thank you logofive for reporting.
141 - Bug: Fix handler allocation crash with multithreaded `io_service`.
142 - Bug: Fixes incorrect whitespace handling in header parsing. #301 Thank you
143 Wolfram Schroers for reporting
144 - Bug: Fix a crash when parsing empty HTTP headers. Thank you Thingol for
146 - Bug: Fix a crash following use of the `stop_listening` function. Thank you
147 Thingol for reporting.
148 - Bug: Fix use of variable names that shadow function parameters. The library
149 should compile cleanly with -Wshadow now. Thank you giszo for reporting. #318
150 - Bug: Fix an issue where `set_open_handshake_timeout` was ignored by server
151 code. Thank you Robin Rowe for reporting.
152 - Bug: Fix an issue where custom timeout values weren't being propagated from
153 endpoints to new connections.
154 - Bug: Fix a number of memory leaks related to server connection failures. #323
155 #333 #334 #335 Thank you droppy and aydany for reporting and patches.
157 - Compatibility: Fix compile time conflict with Visual Studio's MIN/MAX macros.
158 Thank you Robin Rowe for reporting.
159 - Documentation: Examples and test suite build system now defaults to clang on
162 0.3.0-alpha4 - 2013-10-11
163 - HTTP requests ending normally are no longer logged as errors. Thank you Banaan
165 - Eliminates spurious expired timers in certain error conditions. Thank you
166 Banaan for reporting. #295
167 - Consolidates all bundled library licenses into the COPYING file. #294
168 - Updates bundled sha1 library to one with a cleaner interface and more
169 straight-forward license. Thank you lotodore for reporting and Evgeni Golov
171 - Re-introduces strands to asio transport, allowing `io_service` thread pools to
172 be used (with some limitations).
173 - Removes endpoint code that kept track of a connection list that was never used
174 anywhere. Removes a lock and reduces connection creation/deletion complexity
175 from O(log n) to O(1) in the number of connections.
176 - A number of internal changes to transport APIs
177 - Deprecates iostream transport `readsome` in favor of `read_some` which is more
178 consistent with the naming of the rest of the library.
179 - Adds preliminary signaling to iostream transport of eof and fatal transport
181 - Updates transport code to use shared pointers rather than raw pointers to
182 prevent asio from retaining pointers to connection methods after the
183 connection goes out of scope. #293 Thank you otaras for reporting.
184 - Fixes an issue where custom headers couldn't be set for client connections
185 Thank you Jerry Win and Wolfram Schroers for reporting.
186 - Fixes a compile error on visual studio when using interrupts. Thank you Javier
187 Rey Neira for reporting this.
188 - Adds new 1012 and 1013 close codes per IANA registry
189 - Add `set_remote_endpoint` method to iostream transport.
190 - Add `set_secure` method to iostream transport.
191 - Fix typo in .gitattributes file. Thank you jstarasov for reporting this. #280
192 - Add missing locale include. Thank you Toninoso for reporting this. #281
193 - Refactors `asio_transport` endpoint and adds full documentation and exception
194 free varients of all methods.
195 - Removes `asio_transport` endpoint method cancel(). Use `stop_listen()` instead
196 - Wrap internal `io_service` `run_one()` method
197 - Suppress error when trying to shut down a connection that was already closed
199 0.3.0-alpha3 - 2013-07-16
200 - Minor refactor to bundled sha1 library
201 - HTTP header comparisons are now case insensitive. #220, #275
202 - Refactors URI to be exception free and not use regular expressions. This
203 eliminates the dependency on boost or C++11 regex libraries allowing native
204 C++11 usage on GCC 4.4 and higher and significantly reduces staticly built
206 - Updates handling of Server and User-Agent headers to better handle custom
207 settings and allow suppression of these headers for security purposes.
208 - Fix issue where pong timeout handler always fired. Thank you Steven Klassen
209 for reporting this bug.
210 - Add ping and pong endpoint wrapper methods
211 - Add `get_request()` pass through method to connection to allow calling methods
212 specific to the HTTP policy in use.
213 - Fix issue compile error with `WEBSOCKETPP_STRICT_MASKING` enabled and another
214 issue where `WEBSOCKETPP_STRICT_MASKING` was not applied to incoming messages.
215 Thank you Petter Norby for reporting and testing these bugs. #264
216 - Add additional macro guards for use with boost_config. Thank you breyed
217 for testing and code. #261
219 0.3.0-alpha2 - 2013-06-09
220 - Fix a regression that caused servers being sent two close frames in a row
221 to end a connection uncleanly. #259
222 - Fix a regression that caused spurious frames following a legitimate close
223 frames to erroneously trigger handlers. #258
224 - Change default HTTP response error code when no http_handler is defined from
225 500/Internal Server Error to 426/Upgrade Required
226 - Remove timezone from logger timestamp to work around issues with the Windows
227 implementation of strftime. Thank you breyed for testing and code. #257
228 - Switch integer literals to char literals to improve VCPP compatibility.
229 Thank you breyed for testing and code. #257
230 - Add MSVCPP warning suppression for the bundled SHA1 library. Thank you breyed
231 for testing and code. #257
233 0.3.0-alpha1 - 2013-06-09