websocketpp  0.4.0
C++/Boost Asio based websocket client/server library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
changelog.md
1 0.4.0 - 2014-11-04
2 - BREAKING API CHANGE: All WebSocket++ methods now throw an exception of type
3  `websocketpp::exception` which derives from `std::exception`. This normalizes
4  all exception types under the standard exception hierarchy and allows
5  WebSocket++ exceptions to be caught in the same statement as others. The error
6  code that was previously thrown is wrapped in the exception object and can be
7  accessed via the `websocketpp::exception::code()` method.
8 - BREAKING API CHANGE: Custom logging policies have some new required
9  constructors that take generic config settings rather than pointers to
10  std::ostreams. This allows writing logging policies that do not involve the
11  use of std::ostream. This does not affect anyone using the built in logging
12  policies.
13 - BREAKING UTILITY CHANGE: `websocketpp::lib::net::htonll` and
14  `websocketpp::lib::net::ntohll` have been prefixed with an underscore to avoid
15  conflicts with similarly named macros in some operating systems. If you are
16  using the WebSocket++ provided 64 bit host/network byte order functions you
17  will need to switch to the prefixed versions.
18 - BREAKING UTILITY CHANGE: The signature of `base64_encode` has changed from
19  `websocketpp::base64_encode(unsigned char const *, unsigned int)` to
20  `websocketpp::base64_encode(unsigned char const *, size_t)`.
21 - BREAKING UTILITY CHANGE: The signature of `sha1::calc` has changed from
22  `websocketpp::sha1::calc(void const *, int, unsigned char *)` to
23  `websocketpp::sha1::calc(void const *, size_t, unsigned char *)`
24 - Feature: Adds incomplete `minimal_server` and `minimal_client` configs that
25  can be used to build custom configs without pulling in the dependencies of
26  `core` or `core_client`. These configs will offer a stable base config to
27  future-proof custom configs.
28 - Improvement: Core library no longer has std::iostream as a dependency.
29  std::iostream is still required for the optional iostream logging policy and
30  iostream transport.
31 - Bug: C++11 Chrono support was being incorrectly detected by the `boost_config`
32  header. Thank you Max Dmitrichenko for reporting and a patch.
33 - Bug: use of `std::put_time` is now guarded by a unique flag rather than a
34  chrono library flag. Thank you Max Dmitrichenko for reporting.
35 - Bug: Fixes non-thread safe use of std::localtime. #347 #383
36 - Compatibility: Adjust usage of std::min to be more compatible with systems
37  that define a min(...) macro.
38 - Compatibility: Removes unused parameters from all library, test, and example
39  code. This assists with those developing with -Werror and -Wunused-parameter
40  #376
41 - Compatibility: Renames ntohll and htonll methods to avoid conflicts with
42  platform specific macros. #358 #381, #382 Thank you logotype, unphased,
43  svendjo
44 - Cleanup: Removes unused functions, fixes variable shadow warnings, normalizes
45  all whitespace in library, examples, and tests to 4 spaces. #376
46 
47 0.3.0 - 2014-08-10
48 - Feature: Adds `start_perpetual` and `stop_perpetual` methods to asio transport
49  These may be used to replace manually managed `asio::io_service::work` objects
50 - Feature: Allow setting pong and handshake timeouts at runtime.
51 - Feature: Allows changing the listen backlog queue length.
52 - Feature: Split tcp init into pre and post init.
53 - Feature: Adds URI method to extract query string from URI. Thank you Banaan
54  for code. #298
55 - Feature: Adds a compile time switch to asio transport config to disable
56  certain multithreading features (some locks, asio strands)
57 - Feature: Adds the ability to pause reading on a connection. Paused connections
58  will not read more data from their socket, allowing TCP flow control to work
59  without blocking the main thread.
60 - Feature: Adds the ability to specify whether or not to use the `SO_REUSEADDR`
61  TCP socket option. The default for this value has been changed from `true` to
62  `false`.
63 - Feature: Adds the ability to specify a maximum message size.
64 - Feature: Adds `close::status::get_string(...)` method to look up a human
65  readable string given a close code value.
66 - Feature: Adds `connection::read_all(...)` method to iostream transport as a
67  convenience method for reading all data into the connection buffer without the
68  end user needing to manually loop on `read_some`.
69 - Improvement: Open, close, and pong timeouts can be disabled entirely by
70  setting their duration to 0.
71 - Improvement: Numerous performance improvements. Including: tuned default
72  buffer sizes based on profiling, caching of handler binding for async
73  reads/writes, non-malloc allocators for read/write handlers, disabling of a
74  number of questionably useful range sanity checks in tight inner loops.
75 - Improvement: Cleaned up the handling of TLS related errors. TLS errors will
76  now be reported with more detail on the info channel rather than all being
77  `tls_short_read` or `pass_through`. In addition, many cases where a TLS short
78  read was in fact expected are no longer classified as errors. Expected TLS
79  short reads and quasi-expected socket shutdown related errors will no longer
80  be reported as unclean WebSocket shutdowns to the application. Information
81  about them will remain in the info error channel for debugging purposes.
82 - Improvement: `start_accept` and `listen` errors are now reported to the caller
83  either via an exception or an ec parameter.
84 - Improvement: Outgoing writes are now batched for improved message throughput
85  and reduced system call and TCP frame overhead.
86 - Bug: Fix some cases of calls to empty lib::function objects.
87 - Bug: Fix memory leak of connection objects due to cached handlers holding on to
88  reference counted pointers. #310 Thank you otaras for reporting.
89 - Bug: Fix issue with const endpoint accessors (such as `get_user_agent`) not
90  compiling due to non-const mutex use. #292 Thank you logofive for reporting.
91 - Bug: Fix handler allocation crash with multithreaded `io_service`.
92 - Bug: Fixes incorrect whitespace handling in header parsing. #301 Thank you
93  Wolfram Schroers for reporting
94 - Bug: Fix a crash when parsing empty HTTP headers. Thank you Thingol for
95  reporting.
96 - Bug: Fix a crash following use of the `stop_listening` function. Thank you
97  Thingol for reporting.
98 - Bug: Fix use of variable names that shadow function parameters. The library
99  should compile cleanly with -Wshadow now. Thank you giszo for reporting. #318
100 - Bug: Fix an issue where `set_open_handshake_timeout` was ignored by server
101  code. Thank you Robin Rowe for reporting.
102 - Bug: Fix an issue where custom timeout values weren't being propagated from
103  endpoints to new connections.
104 - Bug: Fix a number of memory leaks related to server connection failures. #323
105  #333 #334 #335 Thank you droppy and aydany for reporting and patches.
106  reporting.
107 - Compatibility: Fix compile time conflict with Visual Studio's MIN/MAX macros.
108  Thank you Robin Rowe for reporting.
109 - Documentation: Examples and test suite build system now defaults to clang on
110  OS X
111 
112 0.3.0-alpha4 - 2013-10-11
113 - HTTP requests ending normally are no longer logged as errors. Thank you Banaan
114  for reporting. #294
115 - Eliminates spurious expired timers in certain error conditions. Thank you
116  Banaan for reporting. #295
117 - Consolidates all bundled library licenses into the COPYING file. #294
118 - Updates bundled sha1 library to one with a cleaner interface and more
119  straight-forward license. Thank you lotodore for reporting and Evgeni Golov
120  for reviewing. #294
121 - Re-introduces strands to asio transport, allowing `io_service` thread pools to
122  be used (with some limitations).
123 - Removes endpoint code that kept track of a connection list that was never used
124  anywhere. Removes a lock and reduces connection creation/deletion complexity
125  from O(log n) to O(1) in the number of connections.
126 - A number of internal changes to transport APIs
127 - Deprecates iostream transport `readsome` in favor of `read_some` which is more
128  consistent with the naming of the rest of the library.
129 - Adds preliminary signaling to iostream transport of eof and fatal transport
130  errors
131 - Updates transport code to use shared pointers rather than raw pointers to
132  prevent asio from retaining pointers to connection methods after the
133  connection goes out of scope. #293 Thank you otaras for reporting.
134 - Fixes an issue where custom headers couldn't be set for client connections
135  Thank you Jerry Win and Wolfram Schroers for reporting.
136 - Fixes a compile error on visual studio when using interrupts. Thank you Javier
137  Rey Neira for reporting this.
138 - Adds new 1012 and 1013 close codes per IANA registry
139 - Add `set_remote_endpoint` method to iostream transport.
140 - Add `set_secure` method to iostream transport.
141 - Fix typo in .gitattributes file. Thank you jstarasov for reporting this. #280
142 - Add missing locale include. Thank you Toninoso for reporting this. #281
143 - Refactors `asio_transport` endpoint and adds full documentation and exception
144  free varients of all methods.
145 - Removes `asio_transport` endpoint method cancel(). Use `stop_listen()` instead
146 - Wrap internal `io_service` `run_one()` method
147 - Suppress error when trying to shut down a connection that was already closed
148 
149 0.3.0-alpha3 - 2013-07-16
150 - Minor refactor to bundled sha1 library
151 - HTTP header comparisons are now case insensitive. #220, #275
152 - Refactors URI to be exception free and not use regular expressions. This
153  eliminates the dependency on boost or C++11 regex libraries allowing native
154  C++11 usage on GCC 4.4 and higher and significantly reduces staticly built
155  binary sizes.
156 - Updates handling of Server and User-Agent headers to better handle custom
157  settings and allow suppression of these headers for security purposes.
158 - Fix issue where pong timeout handler always fired. Thank you Steven Klassen
159  for reporting this bug.
160 - Add ping and pong endpoint wrapper methods
161 - Add `get_request()` pass through method to connection to allow calling methods
162  specific to the HTTP policy in use.
163 - Fix issue compile error with `WEBSOCKETPP_STRICT_MASKING` enabled and another
164  issue where `WEBSOCKETPP_STRICT_MASKING` was not applied to incoming messages.
165  Thank you Petter Norby for reporting and testing these bugs. #264
166 - Add additional macro guards for use with boost_config. Thank you breyed
167  for testing and code. #261
168 
169 0.3.0-alpha2 - 2013-06-09
170 - Fix a regression that caused servers being sent two close frames in a row
171  to end a connection uncleanly. #259
172 - Fix a regression that caused spurious frames following a legitimate close
173  frames to erroneously trigger handlers. #258
174 - Change default HTTP response error code when no http_handler is defined from
175  500/Internal Server Error to 426/Upgrade Required
176 - Remove timezone from logger timestamp to work around issues with the Windows
177  implimentation of strftime. Thank you breyed for testing and code. #257
178 - Switch integer literals to char literals to improve VCPP compatibility.
179  Thank you breyed for testing and code. #257
180 - Add MSVCPP warning suppression for the bundled SHA1 library. Thank you breyed
181  for testing and code. #257
182 
183 0.3.0-alpha1 - 2013-06-09
184 - Initial Release