Version 276: * https_get example sends the Host header * Fix async_close error code when async_read times out * Refactor zlib tests and fix enum typo -------------------------------------------------------------------------------- Version 275: * Async init-fns use the executor's default token * Add basic_stream::rebind_executor * Use automatically deduced return types for all async operations * Support Concepts for completion token params -------------------------------------------------------------------------------- Version 274: * Fix leftovers in basic_parser corner case -------------------------------------------------------------------------------- Version 273: * Squelch spurious websocket timer assert * Use the executor type in basic_stream timer -------------------------------------------------------------------------------- Version 272: * Add BEAST_THROWS * Add zlib tests and fixes -------------------------------------------------------------------------------- Version 271: * Add HTTP async client with system_executor example * Add WebSocket async client with system_executor example * Fix data race in HTTP server examples * Fix data race in WebSocket examples -------------------------------------------------------------------------------- Version 270: * Silence unused variables * Fix typo -------------------------------------------------------------------------------- Version 269: * Fix /permissive- missing include * Add test -------------------------------------------------------------------------------- Version 268: * root_certificates.hpp is not for production -------------------------------------------------------------------------------- Version 267: * Add package for Travis config * Fix signed/unsigned mismatch in file_stdio::seek * basic_stream dtor cannot throw * cmake: check policy first * Add default dtors to satisfy -Wnon-virtual-dtor * Multiple I/O of the same type is not supported -------------------------------------------------------------------------------- Version 266: * Fix some missing deduced return types in the docs -------------------------------------------------------------------------------- Version 265: * Fix outgoing websocket message compression -------------------------------------------------------------------------------- Version 264: * Handle overflow in max size calculation in `basic_dynamic_body` * Fix unused variable warnings in tests * Fix missing initializer warning in `basic_fields` * Remove unused functions in `impl/static_string.hpp` * Fix unused variable warning in `multi_buffer` * Fix header-only compilation errors in some configurations * Workaround for miscompilation in MSVC 14.2 -------------------------------------------------------------------------------- Version 263: * Update documentation -------------------------------------------------------------------------------- Version 262: * Fix deallocate in multi_buffer -------------------------------------------------------------------------------- Version 261: * Deduplicate `websocket::read_size_hint` definition * Fix UB in websocket read tests * Remove redundant includes in websocket * Simplify websocket::detail::prng * Don't over-allocate in http::basic_fields * Fix multi_buffer allocation alignment * Tidy up buffers_range -------------------------------------------------------------------------------- Version 260: * More split compilation in rfc7230.hpp * Qualify calls to `beast::iequals` in basic_parser.ipp * More split compilation in websocket/detail/mask.hpp * Cleanup transitive includes in beast/core/detail/type_traits.hpp * Simplify generation of sec-websocket-key * Move detail::base64 helpers to tests * Remove redundant includes in core -------------------------------------------------------------------------------- Version 259: * Reduce the number of instantiations of filter_token_list * Remove the use of `static_string` from `http::fields` * Add gcc-9 to AzP CI test matrix * Enable split compilation in http::basic_fields * Remove redundant instation of `static_string` in websocket * Remove redundant use of `asio::coroutine` in `flat_stream` * Remove unused includes from `test::stream` * Move `char_buffer` into a separate file * Fix coverage collection in AzP CI * Improve performance of `http::string_to_verb` * Replace uses of `net::coroutine` with `asio::coroutine` * Replace uses of `net::spawn` with `asio::spawn` * Use `beast::read_size` in `detail::read` -------------------------------------------------------------------------------- Version 258: * Fix separate compilation in CI * Fix clang inititalization warning in websocket * Remove redundant use of `yield_to` in parser tests * Add VS 2019 AzP CI matrix item * Clean up typo in chat websocket javascript client -------------------------------------------------------------------------------- Version 257: * Add b2 features for compile-time options used in testing * Remove redundant dependencies in http/server/fast example * Remove experimental/unit_test/thread.hpp * Use `if` statement in basic_stream::transfer_op * Fix flat_buffer copy members -------------------------------------------------------------------------------- Version 256: * Remove uses of the deprecated `buffers` function * Remove uses of deprecated methods in websocket tests * Remove redundant use of `static_string` * Remove redundant template in service_base * Expand CI matrix using Azure Pipelines * Make chat websocket javascript client more user friendly * `allocator_traits::construct` is used for user-defined types * Add 1-element specialization for `buffers_cat` * Fix `buffers_cat` iterator tests * Don't pessimize-move * Use steady_timer type * Preserve operation_aborted on partial message -------------------------------------------------------------------------------- Version 255: * Add idle ping suspend test * Fix moved-from executor in idle ping timeout -------------------------------------------------------------------------------- Version 254: * Fix data race in test::stream::connect * Fix UB in websocket close tests * Fix uninitalized memory use in deflate_stream * Fix gcc-8 warning in websocket::stream -------------------------------------------------------------------------------- Version 253: * Fix async_detect_ssl handler type * member get_executor const-correctness * Fix min/max on MSVC * Relax requirements for vector_body -------------------------------------------------------------------------------- Version 252: * More std::string_view fixes * CI copies to libs/beast -------------------------------------------------------------------------------- Version 251: * Clean up CI scripts * detect_ssl uses bool * launder pointers * Fix compilation on MSVC with std::string_view * Replace static_string in parser -------------------------------------------------------------------------------- Version 250: * Use SaxonHE in reference generation * Cleanup endianness conversions * Set parser status and flags even if body_limit_ has been reached -------------------------------------------------------------------------------- Version 249: * Move friend function template definition -------------------------------------------------------------------------------- Version 248: * Don't use a moved-from handler -------------------------------------------------------------------------------- Version 247: * Fix async_base immediate completion -------------------------------------------------------------------------------- Version 246: * decorator ctor is explicit -------------------------------------------------------------------------------- Version 245: * decorator constructor is constrained -------------------------------------------------------------------------------- Version 244: * Tidy up declval in some traits * Fix websocket keep-alive ping expiration -------------------------------------------------------------------------------- Version 243: * Fix some typos * Tidy up file_stdio for VS2015 * Fix http::message constructor constraint -------------------------------------------------------------------------------- Version 242: * test::stream has deprecated lowest_layer for ssl * MSVC uses ::fopen_s * Fix http::message constructor constraint * Check defined(BOOST_MSVC) -------------------------------------------------------------------------------- Version 241: * Tidy up a doc code snippet * basic_parser::content_length is stable (API Change) -------------------------------------------------------------------------------- Version 240: * Fix ssl_stream teardown -------------------------------------------------------------------------------- Version 239: * More split compilation in HTTP -------------------------------------------------------------------------------- Version 238: * Refactor Jamfiles to work with release layout -------------------------------------------------------------------------------- Version 237: * cmake: Use static libs to speed up builds -------------------------------------------------------------------------------- Version 236: * root_certificates.hpp: brought in the server certificate -------------------------------------------------------------------------------- Version 235: * Fix self-assignment warning in buffer test * Jamfile cleanup -------------------------------------------------------------------------------- Version 234: * Don't link to OpenSSL needlessly (bjam) * HTTPS URLs in README.md -------------------------------------------------------------------------------- Version 233: * Check __ANDROID__ instead * Use secure TLS/SSL versions -------------------------------------------------------------------------------- Version 232: * Fix close_socket for net::basic_socket changes * Fix file_win32_write_op async initiation * Fix basic_stream lowest_layer for ssl -------------------------------------------------------------------------------- Version 231: * Doc section names are stable * Add missing include * Constrain to_static_string to integers -------------------------------------------------------------------------------- Version 230: * Don't use dynamic_buffer_ref * Remove dynamic_buffer_ref * Fix completion handler invocation signatures -------------------------------------------------------------------------------- Version 229: * Rename to buffer_bytes * Tidy up examples * detect_ssl returns a bool * Fix stable_async_base example API Changes: * handler_ptr is deprecated Actions Required: * Replace use of `handler_ptr` with `stable_async_base` and `allocate_stable`. -------------------------------------------------------------------------------- Version 228: * Fix UB in decorator: * Sync up convenience headers * The Fields concept is deprecated (API Change) * Fix includes.xsl for newer doxygen * Tidy up quick reference * SSL teardowns are in an associated namespace -------------------------------------------------------------------------------- Version 227: * Fix decorator for certain sizes -------------------------------------------------------------------------------- Version 226: * Support -fno-exceptions * make_strand is in net:: * Fix HTTP parser static string calculation * Move parser definitions to .ipp * Appveyor uses msvc-14.0 -------------------------------------------------------------------------------- Version 225: * Tidy up an unused function * Fix wsload jamfile * Examples use flat_buffer * Remove session_alloc (API Change) Actions Required: * Don't use session_alloc -------------------------------------------------------------------------------- Version 224: * Remove extraneous error check in advanced-server-flex * Advanced servers use HTTP parser interfaces for reading * Reusing an HTTP parser returns an error -------------------------------------------------------------------------------- Version 223: * Add test::stream::service * Add websocket service * Pausation abandoning test * Destroy abandoned websocket ops on shutdown -------------------------------------------------------------------------------- Version 222: * stream_base::timeout::suggested is a nested function -------------------------------------------------------------------------------- Version 221: * Rename to async_base, stable_async_base * role_type is in boost/beast/core/role.hpp (API Change) * Cleanup in test::stream internals * Pass references as pointers to async_initiate Actions Required: * Include or define BOOST_BEAST_ALLOW_DEPRECATED=1 -------------------------------------------------------------------------------- Version 220: * Documentation and release notes -------------------------------------------------------------------------------- Version 219: * More split definitions in test::stream * Visual Studio 2017 minimum requirement for Windows * Better treatment of SSL short reads * ssl_stream is a public interface * basic_parser is abstract, not CRTP (API Change) * OpenSSL is required for tests and examples -------------------------------------------------------------------------------- Version 218: * detect_ssl, async_detect_ssl are public interfaces * Add OpenSSL installation/setup instructions * Enable split Beast compilation for tests -------------------------------------------------------------------------------- Version 217: * websocket idle pings * RatePolicy documentation * Pass strand to async_accept * Fix file_body_win32 * Use async_initiate * Check BOOST_NO_CXX11_THREAD_LOCAL * Fast prng is pcg -------------------------------------------------------------------------------- Version 216: * Refactor websocket::stream operations * Add websocket::stream timeouts * Use suggested timeouts in Websocket examples * Add make_strand * Add RatePolicy to basic_stream * Use async_initiate in basic_stream * basic_stream connects are members * Beast supports latest Asio changes (API Change) * WebSocket Decorator is a socket option (API Change) * Overloads of the following functions which accept a Decorator are deprecated: - accept, accept_ex - handshake, handshake_ex - async_accept, async_accept_ex - async_handshake, async_handshake_ex Actions Required: * Code which passes decorator to any `websocket::stream` member function should call `stream::set_option` instead with a newly constructed `stream_base::decorator` object containing the decorator. Alternatively, the macro `BOOST_BEAST_ALLOW_DEPRECATED` may be defined to 1. * Fix compilation errors required by Asio changes -------------------------------------------------------------------------------- Version 215: * basic_stream uses boost::shared_ptr * Remove bind_back_handler * bind_front_handler works with member functions * Examples use bind_front_handler * Add experimental test/handler.hpp * Rename to async_op_base::invoke_now * Add async_op_base::invoke * Remove CppCon2018 example * Examples use ssl_stream -------------------------------------------------------------------------------- Version 214: * Handler binders use the associated allocator * Add detail::bind_continuation * Rewrite the echo-op example -------------------------------------------------------------------------------- Version 213: * Fix posix_file::close handling of EINTR * basic_stream subsumes stranded_stream: * Use timeouts in HTTP server examples * Use timeouts in HTTP client examples * Use tcp_stream in WebSocket client examples * Use tcp_stream in WebSocket server examples * Use tcp_stream, HTTP timeouts in advanced servers -------------------------------------------------------------------------------- Version 212: * dynamic_buffer_ref tests and tidy * flat_stream tests and tidy * stranded_socket tests and tidy * buffers_front tests * Improved websocket stream documentation -------------------------------------------------------------------------------- Version 211: * close_socket is in stream_traits.hpp * Improvements to test::stream * Add stranded_stream * Add flat_stream * flat_buffer::clear preserves capacity * multi_buffer::clear preserves capacity * Fixes to rfc7230 -------------------------------------------------------------------------------- Version 210: * Tidy up read implementation * Fix stable_async_op_base javadoc * Better handling of stream timeouts * Add stream_traits.hpp * Add executor_type trait * Fix hexadecimal string conversion table * is_completion_handler, type_traits.hpp are deprecated * Fixes to test::stream::async_read API Changes: * Stream traits are now in stream_traits.hpp * `is_file` is now in file_base.hpp * is_completion_handler is deprecated Actions Required: * Include stream_traits.hpp as needed * Include file_base.hpp as needed * Use std::is_invocable instead of is_completion_handler -------------------------------------------------------------------------------- Version 209: * Faster http::string_to_field * async_echo supports move-only handlers * test::stream maintains a handler work guard * Qualify buffer_copy, don't qualify buffer_size * Add dynamic_buffer_ref * Refactor quickref.xml * Add buffer_size -------------------------------------------------------------------------------- Version 208: * Add get_lowest_layer free function * Add lowest_layer_type metafunction * Add close_socket, beast_close_socket customization * Doc work -------------------------------------------------------------------------------- Version 207 * Send from the strand * Pass the correct handler in basic_timeout_stream API Changes: * lowest_layer is removed Actions Required: * Remove lowest_layer and lowest_layer_type from user-defined streams. * Use the get_lowest_layer free function and the lowest_layer_type trait as needed. -------------------------------------------------------------------------------- Version 206 * Clear error codes idiomatically * websocket stream uses shared_ptr * Add websocket-chat-multi example -------------------------------------------------------------------------------- Version 205 * Doc work * Add detail/soft_mutex.hpp * Add detail/prng.hpp -------------------------------------------------------------------------------- Version 204 * Add basic_timeout_stream * Unit test macros use the global suite * Doc work -------------------------------------------------------------------------------- Version 203 * Update networking refresher doc * Include error code in call to set_option * saved_handler is a public interface * Use new saved_handler in websocket * session_alloc is thread-safe * examples use flat_buffer * parse_until is not static * Boost.System is header-only -------------------------------------------------------------------------------- Version 202 * Use cxxstd instead of cxxflags * Update coverage badge images * Tidy up basic_stream_socket docs * Refactor async_op_base * Use async_op_base * async_op_base is a public interface * Add tests for bind_back_handler * Add tests for async_op_base -------------------------------------------------------------------------------- Version 201 * Decay bound arguments in handler wrapper parameters * Add bind_back_handler * Tidy up default-constructed iterators * Add core errors and conditions * New basic_stream_socket -------------------------------------------------------------------------------- Version 200 * Don't include OpenSSL for core snippets * Tidy up msvc-14 workaround in multi_buffer * buffers_cat fixes and coverage * Refactor buffers_adaptor * Refactor buffers_range * Fix and refactor buffers_cat * Refactor buffers_prefix * Add const and mutable buffer sequence traits * Add buffers_iterator_type trait * Use new buffer traits, remove old unused traits * Optimize for size on buffers_cat preconditions * Refactor buffers_suffix * Tidy up flat_buffer tests * Fix ostream prepare calculation for low limits * Tidy up flat_static_buffer tests * Add more tests for dynamic buffers * Tidy up multi_buffer * Refactor ostream * Refactor static_buffer * HTTP tidying * Adjust static_asio lib options in Jamfile * Add type_traits tests * Add buffers_range_ref (replaces reference_wrapper parameter) API Changes: * buffers_adaptor replaces buffers_adapter (rename) * make_printable replaces buffers (rename) * Remove file_mode::append_new Actions Required: * Replace buffers_adapter.hpp with buffers_adaptor.hpp, and replace buffers_adapter with buffers_adaptor. Or, define BOOST_BEAST_ALLOW_DEPRECATED * Replace call sites to use make_printable instead of buffers, and also include make_printable.hpp instead of ostream.hpp. * Replace file_mode::append_new with file_mode::append or file_mode::append_existing instead of file_mode::append_new -------------------------------------------------------------------------------- Version 199: * Workarounds for msvc-14 * Fix Appveyor badge links -------------------------------------------------------------------------------- Version 198: * flat_buffer improvements * multi_buffer improvements * static_buffer improvements * flat_static_buffer_improvements * saved_handler maintains a work_guard (websocket) * Add buffer_traits.hpp, buffers_type * Tidy up experimental files * Tidy up core files * Fix bind_handler, bind_front_handler * Improved handler bind wrapper tests API Changes: * Files return errc::bad_file_descriptor * flat_static_buffer::reset is deprecated Actions Required: * Callers checking for errc::invalid_argument from calls to file APIs should check for errc::bad_file_descriptor instead. * Replace calls to flat_static_buffer::reset with flat_static_buffer::clear -------------------------------------------------------------------------------- Version 197: * Improvements to echo-op example * Crawler example clears the response before each read * Use a struct instead of a pair in flat_stream (experimental) API Changes: * Refactor HTTP operations Actions Required: * Callers depending on the return value of http::read or http::async_read overloads should adjust the usage of the returned value as needed. -------------------------------------------------------------------------------- Version 196: * Tidy up calls to placement new * Remove unused type_traits * Simplify handler_ptr -------------------------------------------------------------------------------- Version 195: * net is a namespace alias for boost::asio * Simplify multi_buffer and static_buffer sequences * Documentation work -------------------------------------------------------------------------------- Version 194: * http::async_read returns the right byte count on error * Add net namespace alias * Don't use-after-free in test * Tidy up ssl_stream (experimental) * Dynamic buffer improvements * Saved handlers are dispatched -------------------------------------------------------------------------------- Version 193: * Update ssl_stream signatures for networking changes * Fix test::stream async_result transformation * Tidy up test::stream * Enable explicit instantiation of websocket::stream -------------------------------------------------------------------------------- Version 192: * Use mp11::integer_sequence * Tidy up warnings and deprecated usage * http::message is not-a boost::empty_value * Fix link in docs * Fixes to timeout services (experimental) -------------------------------------------------------------------------------- Version 191: * Add bind_front_handler * Use bind_front_handler * Simplify some type traits * Use lean_tuple in buffers_cat * Use lean_tuple in bind_handler, bind_front_handler * Use mp11 in detail::variant * Fix buffers_cat uninitialized warning * Fix static_string uninitialized warning * Fix warning in is_ssl_handshake -------------------------------------------------------------------------------- Version 190: * Add missing includes to convenience headers * Unit test framework is experimental * Add buffers_range * Rename experimental directory * Improve compilation of tests for continuous integration * Fix visibility warnings in test -------------------------------------------------------------------------------- Version 189-hf1: * Fix broken doc link * example/cppcon2018 only requires C++11 -------------------------------------------------------------------------------- Version 189: * Add CppCon2018 chat server example and video -------------------------------------------------------------------------------- Version 188: * Remove extraneous strand from example * Add missing include in http/read.ipp * Test for gcc warning bug * Fix a spurious gcc warning -------------------------------------------------------------------------------- Version 187: * Add experimental timeout_socket * Fix warning in file tests * Fix uninitialized comparison in buffers iterator * Partial support for BOOST_NO_EXCEPTIONS * Fix a spurious gcc warning * Test for gcc warning bug * Add missing include * Remove extraneous strand from example -------------------------------------------------------------------------------- Version 186: * basic_fields uses intrusive base hooks * Fix parsing of out-of-bounds hex values -------------------------------------------------------------------------------- Version 185: * Remove extraneous function * Fix some typos * Add BOOST_BEAST_USE_STD_STRING_VIEW * Fix timer on websocket upgrade in examples -------------------------------------------------------------------------------- Version 183: * Fix a rare case of failed UTF8 validation * Verify certificates in client examples * Use boost::empty_value * Workaround for http-server-fast and libstdc++ -------------------------------------------------------------------------------- Version 182: * Silence ubsan false positive -------------------------------------------------------------------------------- Version 181: * Fix parse_dec algorithm * Add parse_dec tests -------------------------------------------------------------------------------- Version 180: * Fix http_server_stackless_ssl.cpp example -------------------------------------------------------------------------------- Version 179: * Use the exchange() idiom in move constructors * Most members of std::allocate are deprecated in C++17 * Remove some unused variables -------------------------------------------------------------------------------- Version 178: * Use static_cast instead -------------------------------------------------------------------------------- Version 177: * Add test for issue #1188 * Set /permissive- * Check error in example set_option -------------------------------------------------------------------------------- Version 176: * Tidy up Quick Reference * Fix array end calculation in utf8 assertion * WebSocket masks use secure PRNG by default -------------------------------------------------------------------------------- Version 175: * Fix initialization warning -------------------------------------------------------------------------------- Version 174: * Fix Fields, FieldsWriter concept docs * Fix BodyReader constructor requirements doc -------------------------------------------------------------------------------- Version 173: * Remove Autobahn testsuite doc note * Fix buffers_adapter iterator value type * Fix buffers_adapter max_size * Fix buffers_prefix iterator decrement * buffers_adapter improvements * Add icy_stream Shoutcast stream filter -------------------------------------------------------------------------------- Version 172: * Tidy up websocket stream javadocs * Fix move-only arguments in bind_handler * Fix http::parser constructor javadoc * Tidy up test::stream javadocs * Tidy up composed operation doc -------------------------------------------------------------------------------- Version 171: * Add handler_ptr::has_value * Remove spurious assert * Fix unused variable warning -------------------------------------------------------------------------------- Version 170: * Add flat_stream to experimental * Add ssl_stream to experimental * Add test::error to experimental * Add test::fail_count to experimental * Add test::stream to experimental * Use a shared string for example HTTP server doc roots * Remove deprecated serializer::reader_impl() * Remove deprecated Body reader and writer ctor signatures * Add is_mutable_body_writer metafunction * Add const and non-const overloads for message based http writes * Use the root certificate which matches the fingerprint -------------------------------------------------------------------------------- Version 169: * Use buffers_to_string in tests * Use boost::void_t * Refactor HTTP write_op implementation * Use fully qualified namespace in BOOST_BEAST_HANDLER_INIT * New flat_stream example class * Use flat_stream in ssl_stream example code -------------------------------------------------------------------------------- Version 168: * Use executor_work_guard in composed operations * Revert verb.ipp change which caused spurious warnings * Fix race in advanced server examples -------------------------------------------------------------------------------- Version 167: * Revert: Tidy up calls to post() -------------------------------------------------------------------------------- Version 166: * Use boost::is_convertible as a workaround -------------------------------------------------------------------------------- Version 165: * Fix BOOST_NO_CXX11_ALLOCATOR check -------------------------------------------------------------------------------- Version 164: * Fix masking on continuation frames * Add Access-Control-Expose-Headers field constant -------------------------------------------------------------------------------- Version 163: * Tidy up calls to post() * Fix narrowing warnings -------------------------------------------------------------------------------- Version 162: * Add asio_handler_invoke overloads for stream algorithms * Improve websocket::stream::control_callback javadoc -------------------------------------------------------------------------------- Version 161: * Don't copy the handler in write_some_op * Add move-only handler tests * Fix handler parameter javadocs -------------------------------------------------------------------------------- Version 160: * Examples clear the HTTP message before reading -------------------------------------------------------------------------------- Version 159: * Fix typo in release notes * Safe treatment of zero-length string arguments in basic_fields * Some basic_fields operations now give the strong exception guarantee -------------------------------------------------------------------------------- Version 158: * Tidy up end_of_stream javadoc * Tidy up websocket docs * Examples set reuse_address(true) * Advanced servers support clean shutdown via SIGINT or SIGTERM * DynamicBuffer input areas are not mutable * Tidy up some documentation API Changes: * get_lowest_layer is a type alias Actions required: * Replace instances of `typename get_lowest_layer::type` with `get_lowest_layer`. -------------------------------------------------------------------------------- Version 157: * Fix teardown for TIME_WAIT * Fix big-endian websocket masking -------------------------------------------------------------------------------- Version 156: * Don't use typeid * Add release notes to documentation * Fix stale link for void-or-deduced -------------------------------------------------------------------------------- Version 155: * Fix memory leak in advanced server examples * Fix soft-mutex assert in websocket stream * Fix fallthrough warnings * Tidy up bind_handler doc -------------------------------------------------------------------------------- Version 154: * Type check completion handlers * bind_handler doc update * bind_handler works with boost placeholders -------------------------------------------------------------------------------- Version 153: * Remove BOOST_VERSION checks * Use make_error_code for setting an error_code from errc * Use boost::winapi::GetLastError() consistently * Update README.md for branches * Avoid string_view::clear * Fix iterator version of basic_fields::erase * Fix use-after-move in example request handlers * Add Bishop Fox interview media -------------------------------------------------------------------------------- Version 152: * Refactor detect_ssl_op * Disable gdb on Travis for Meltdown WebSocket: * Redistribute the read tests in the translation units * Refactor error headers * Add WebSocket error conditions API Changes: * Refactor WebSocket errors (API Change): Actions Required: * Code which explicitly compares error_code values against the constant `websocket::error::handshake_failed` should compare against `websocket::condition::handshake_failed` instead. * Code which explicitly compares error_code values against the constant `websocket::error::failed` should compare against `websocket::condition::protocol_violation` instead. -------------------------------------------------------------------------------- Version 151: * Sanitizer failures are errors * Depend on container_hash * Fix high-ASCII in source file WebSocket: * Control callback is invoked on the execution context * Add stream_fwd.hpp * Remove unnecessary include API Changes: * http::parser is not MoveConstructible * permessage-deflate is a compile-time feature -------------------------------------------------------------------------------- Version 150: * handler_ptr tests * Documentation API Changes: * serializer::reader_impl is deprecated Actions Required: * Call serializer::writer_impl instead of reader_impl -------------------------------------------------------------------------------- Version 149: * built-in r-value return values can't be assigned * Tidy up ssl_stream special members * Fix CMakeLists.txt variable * Protect calls from macros * pausation always allocates * Don't copy completion handlers * handler_ptr is move-only * Fix Travis memory utilization API Changes: * handler_ptr gives the strong exception guarantee Actions Required: * Change the constructor signature for state objects used with handler_ptr to receive a const reference to the handler. -------------------------------------------------------------------------------- Version 148: * Install codecov on codecov CI targets only * Update reports for hybrid assessment * Handle invalid deflate frames -------------------------------------------------------------------------------- Version 147: * Don't use boost::string_ref * Use iterator wrapper in detail::buffers_range HTTP: * Tidy up basic_fields exception specifiers WebSocket: * control callback is copied or moved * Send idle pings in advanced servers -------------------------------------------------------------------------------- Version 146: * Fix some typos * Faster ascii_tolower * Documentation tidying * Fix typo in examples documentation * Add detail::aligned_union and tidy up * Use variant in buffers_cat_view API Changes: * Remove unintended public members of handler_ptr -------------------------------------------------------------------------------- Version 145: * Rename some detail functions * Refactor basic_fields allocator internals * Refactor HTTP async read composed operations * null_buffers is deprecated * Version 124 works with Boost 1.65.1 and earlier * basic_fields does not support fancy pointers -------------------------------------------------------------------------------- Version 144-hf1: * Update reports for hybrid assessment * Handle invalid deflate frames * Install codecov on codecov CI targets only -------------------------------------------------------------------------------- Version 144: * Fix websocket permessage-deflate negotiation -------------------------------------------------------------------------------- Version 143: * Fix autobahn report link -------------------------------------------------------------------------------- Version 142: * Warn about upcoming API changes to certain concepts * Fix name typo in http write test -------------------------------------------------------------------------------- Version 141: * Tidy up some documentation -------------------------------------------------------------------------------- Version 140: * Fix some integer warnings in 64-bit builds * Fix utf8_checker test failures * Fix signature for async_read_some, and tests * Tidy up basic_parser * Some basic_fields special members are protected -------------------------------------------------------------------------------- Version 139: * Revisit boost library min/max guidance -------------------------------------------------------------------------------- Version 138: * Tidy up some documentation -------------------------------------------------------------------------------- Version 137: * ConstBufferSequence mandates pointer equivalence * Add FieldsWriter constructor requirement * Tidy up some documented constructor syntax -------------------------------------------------------------------------------- Version 136: * Tidy up message doc image -------------------------------------------------------------------------------- Version 135: * Fix typo in example server help text -------------------------------------------------------------------------------- Version 134: * Add static_buffer_base default constructor definition -------------------------------------------------------------------------------- Version 133: * Remove const&& overload of message::body -------------------------------------------------------------------------------- Version 132: * Tidy up project folders in CMakeLists.txt * Rename Cmake variables for clarity * Add ref-qualified overloads for message::body * Tidy up FieldsReader doc API Changes: * Fields::writer replaces Fields::reader * BodyReader and BodyWriter names are swapped Actions Required: * Rename reader to writer for user defined Fields * Swap the reader and writer names for user defined Body types * Swap use of is_body_reader and is_body_writer -------------------------------------------------------------------------------- Version 131: * basic_fields returns const values * Set SNI hostname in example SSL clients -------------------------------------------------------------------------------- Version 130: * Tidy up fallthrough warning * Remove cxx11_sfinae_expr build requirement from tests -------------------------------------------------------------------------------- Version 129: * Add autobahn test report to doc * Documentation tidying * Fix prepare_payload: chunked is HTTP/1.1 -------------------------------------------------------------------------------- Version 128: * Update doc links * Add explicit-failures-markup.xml HTTP: * Add message::need_eof * Use message::need_eof in example servers * Use synchronous writes in chunk output example WebSocket: * Fix utf8 validation for autobahn * Temporarily disable utf8 validation tests * Tidy up fast websocket server host names API Changes: * Remove serializer::keep_alive * Remove serializer::chunked * Add has_content_length_impl to Fields * Add message::has_content_length * Rename some basic_parser observers Actions Required: * Call message::keep_alive instead of serializer::keep_alive * Call serializer::get::chunked instead of serializer::chunked * Implement has_content_length_impl for user-defined Fields * Remove the "is_" prefix from call sites invoking certain basic_parser members -------------------------------------------------------------------------------- Version 127: * Add BOOST_BEAST_NO_POSIX_FADVISE * Version command line option for HTTP client examples * More Jamfile compiler requirements for tests -------------------------------------------------------------------------------- Version 126: * Add CppCon2017 presentation link * Update README.md * Update stream write documentation for end of stream changes * Tidy up unused variable warnings * Don't return end_of_stream on win32 file body writes * Fix doc typo * Fix shadowing in session_alloc * Fix executor type compilation * Add Travis tests with the default compilers * Update Boost.WinAPI usage to the new location and namespace. * Fix buffered_read_stream async_read_some signature -------------------------------------------------------------------------------- Version 125: API Changes: * Update for Net-TS Asio Actions Required: * Use BOOST_ASIO_HANDLER_TYPE instead of handler_type * Use BOOST_ASIO_INITFN_RESULT_TYPE instead of async_result * Use boost::asio::async_completion * Use boost::asio::is_dynamic_buffer * Use boost::asio::is_const_buffer_sequence * Use boost::asio::is_mutable_buffer_sequence * boost::asio::associated_allocator_t replaces handler_alloc -------------------------------------------------------------------------------- Version 124: * Fix for a test matrix compiler * Fix basic_fields javadoc API Changes: * http write returns success on connection close Actions Required: * Add code to servers to close the connection after successfully writing a message where `message::keep_alive()` would return `false`. -------------------------------------------------------------------------------- Version 123: * Use unit-test subtree * Fix spurious race in websocket close test * Check compiler feature in Jamfile * Clear previous message fields in parser -------------------------------------------------------------------------------- Version 122: * Add test for issue 807 * assert on empty buffer in websocket read * Fix zlib symbol conflicts * CMake 3.5.1 is required * config.hpp is not a public header * Add missing case in error test -------------------------------------------------------------------------------- Version 121: * Add test for issue 802 * Fix enum and non-enum in conditional exp. warning -------------------------------------------------------------------------------- Version 120: * Fix spurious strand_ in advanced_server_flex * OpenSSL targets are optional (CMake) -------------------------------------------------------------------------------- Version 119: * Tidy up doc badge links -------------------------------------------------------------------------------- Version 118: * file_win32 opens for read-only in shared mode * Remove unused strands in server examples * Update build instructions * Doc root is at index.html HTTP: * Fix writing header into std::ostream -------------------------------------------------------------------------------- Version 117: * Add buffers_to_string API Changes: * buffers_suffix replaces consuming_buffers * buffers_prefix replaces buffer_prefix * buffers_prefix_view replaces buffer_prefix_view * buffers_front replaces buffer_front * buffers_cat replaces buffer_cat * buffers_cat_view replaces buffer_cat_view * Remove buffers_suffix::get Actions Required: * Use buffers_suffix instead of consuming_buffers * Use buffers_prefix instead of buffer_prefix * Use buffers_prefix_view instead of buffer_prefix_view * Use buffers_front instead of buffer_front * Use buffers_cat instead of buffer_cat * Use buffers_cat_view instead of buffer_cat_view * Avoid calling buffers_suffix::get -------------------------------------------------------------------------------- Version 116: API Changes: * message::body is a member function * message::version is a member function Actions Required: * Call member function message::body instead of accessing the data member at call sites. * Call member function message::version instead of accessing the version member at call sites. -------------------------------------------------------------------------------- Version 115: * Update README.md master doc link -------------------------------------------------------------------------------- Version 114: (No changes) -------------------------------------------------------------------------------- Version 113: * Fix handler signature in async_read_header * Remove field_range copy constructor -------------------------------------------------------------------------------- Version 112: * Update websocket notes API Changes: * WebSocket writes return the bytes transferred * HTTP reads and writes return bytes transferred Actions Required: * Modify websocket write completion handlers to receive the extra std::size_t bytes_transferred parameter. * Modify HTTP read and/or write completion handlers to receive the extra std::size_t bytes_transferred parameter. -------------------------------------------------------------------------------- Version 111: WebSocket: * Fix utf8 check split code point at buffer end * Refactor stream operations and tests plus coverage * Suspended ops special members -------------------------------------------------------------------------------- Version 110: * Refactor stream open state variable * Refactor websocket stream members * Refactor websocket stream: fixes and tests * Add test::stream::lowest_layer * Fix invalid iterator in test reporter -------------------------------------------------------------------------------- Version 109: * refactor test::stream WebSocket: * Fix async_read_some handler signature * websocket close fixes and tests * websocket handshake uses coroutine * websocket ping tests * Fix websocket close_op resume state * websocket write tests * split up websocket tests * websocket read tests API Changes: * websocket accept refactoring Actions Required: * Do not call websocket accept overloads which take both a message and a buffer sequence, as it is illegal per rfc6455. -------------------------------------------------------------------------------- Version 108: * Fix argument parsing in HTTP examples * Don't use async_write_msg in examples -------------------------------------------------------------------------------- Version 107: * Use test::stream WebSocket * Fix done state for WebSocket reads * Fix utf8 check for compressed frames * Rename frame and header buffer types -------------------------------------------------------------------------------- Version 106: * Dynamic buffer input areas are mutable * Add flat_static_buffer::reset HTTP: * Fix for basic_parser::skip(true) and docs WebSocket: * websocket test improvements * Remove obsolete write_op * Refactor write_op * Refactor ping_op * Refactor fail_op * Refactor read_op * Refactor close_op * Refactor read_op + fail_op * Websocket close will automatically drain * Autobahn|Testsuite fixes * Tidy up utf8_checker and tests -------------------------------------------------------------------------------- Version 105: * Fix compile error in websocket snippet * Tidy up Jamfile and tests -------------------------------------------------------------------------------- Version 104: * Remove unused include * Use #error in config.hpp * Only set -std=c++11 on Travis * Only set /permissive- on Appveyor * Tidy up some test warnings * tools/ renamed from build/ WebSocket: * Fix pausation::save -------------------------------------------------------------------------------- Version 103: * Boost test matrix fixes * Tidy up allocator usage * Example HTTP server fixes -------------------------------------------------------------------------------- Version 102: * Section headings in examples -------------------------------------------------------------------------------- Version 101: * Refactor all examples -------------------------------------------------------------------------------- Version 100: * Fix doc convenience includes * Fix doc includes * Remove unused test header * Rename test macros * Reorder define test macro params * vcxproj workaround for include symlinks * Add variadic min/max WebSocket: * Remove obsolete frame tests * Refactor fail/clode code * Call do_fail from read_some * eof on accept returns error::closed * Fix stream::read_size_hint calculation * Documentation API Changes: * Calls to stream::close and stream::async_close will automatically perform the required read operations * drain_buffer is removed * role_type replaces teardown_tag Actions Required: * Remove calling code which drains the connection after calling stream::close or stream::async_close * Replace code which uses drain_buffer. For websocket::stream, it is no longer necessary to manually drain the connection after closing. * Modify signatures of teardown and async_teardown to use role_type instead of teardown_tag * Change calls to teardown and async_teardown to pass the correct role_type, client or server, depending on context. -------------------------------------------------------------------------------- Version 99: * Log the value of LIB_DIR for doc builds (debug) * Use correct handler signature in fail_op * Fix doc typo -------------------------------------------------------------------------------- Version 98: * basic_fields::key_compare is noexcept * Fix bench-zlib cmake * Use unique names Jam projects * Trim utf8 checker test -------------------------------------------------------------------------------- Version 97: * Update redirect -------------------------------------------------------------------------------- Version 96: * Move bench/ to test/ * Move extras/ to test/ * Use property * Rename wsload compile target * Fix library.json * Update boostorg links * Add bench-zlib * Faster zlib tests * Less compression on websocket test -------------------------------------------------------------------------------- Version 95: * Tidy up Travis build scripts * Move scripts to build/ * Fix race in test::pipe * close on test::pipe teardown * Add test::stream * Tidy up static_buffer braced init * Fix html redirect * Add valgrind variant, fix false positives -------------------------------------------------------------------------------- Version 94: * Use off-site Quick Start link temporarily -------------------------------------------------------------------------------- Version 93: * Unset BOOST_COROUTINES_NO_DEPRECATION_WARNING -------------------------------------------------------------------------------- Version 92: * Fix typo in test/CMakeLists.txt * basic_fields::value_type is not copyable * Update repository links in source comments * Ignore Content-Length in some cases * Tidy up doc snippet paths * Use off-site doc link -------------------------------------------------------------------------------- Version 91: * Adjust redirect html * Don't build pre-C++11 * source.dox is path-independent * Tidy up namespace qualifiers * Tidy up MSVC CMakeLists.txt * Optimize buffered_read_stream * constexpr in derived buffers * Set BOOST_ASIO_NO_DEPRECATED * Use Asio array optimization in static_buffer_base * Rename wstest source file * Use fopen_s on Windows * Fix Appveyor script * Update project metadata * Move benchmarks to bench/ * Fix doc title * Build stand-alone doc * Update doc copyrights * Refactor test build scripts WebSocket: * Tidy up websocket javadocs * Refactor accept, handshake ops * Use read buffer instead of buffered stream API Changes * control frame callbacks are non-const references Actions Required: * Modify calls to set the control frame callback, to pass non-const reference instances, and manage the lifetime of the instance. -------------------------------------------------------------------------------- Version 90: * Fix websocket read of zero length message * Fix typo in equal_range * Output to integrated documentation -------------------------------------------------------------------------------- Version 89: * Fix CONTRIBUTING.md links -------------------------------------------------------------------------------- Version 88: * Update doc links in README.md * Refactor tests Jamfile * Don't use program_options WebSocket: * Fix uninitialized frame done -------------------------------------------------------------------------------- Version 87: * Update appveyor for Boost branch * Rename to BEAST_EXPECT * variant fixes and tests * Update README, add CONTRIBUTING.md and CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- Version 86: * Boost prep * Remove use of lexical_cast * Use custom variant * Update README.md * Add local-travis.sh * Use winapi * Update CMakeLists.txt for boost * Update documentation for boost * Update copyrights * Remove spurious declaration * Tidy up Jamfile * Normalize doc build scripts * Use configured doxygen and xsltproc * Fix Deferred Body Type Example Documentation * Add library metadata API Changes: * websocket read returns the number of bytes inserted Actions Required: * Change the signature of completion handlers used with websocket::stream::async_read to void(error_code, std::size_t) -------------------------------------------------------------------------------- Version 85: * Fix test failure * Tidy up test warning -------------------------------------------------------------------------------- Version 84: * Tidy up buffer_front * static_buffer::consume improvement * multi_buffer is type-check friendly * bind_handler allows placeholders * Add consuming_buffers::get WebSocket: * WebSocket read optimization API Changes: * websocket::stream::read_buffer_size is removed Actions Required: * Remove calls websocket::stream::read_buffer_size * Use read_some and write_some instead of read_frame and write_frame -------------------------------------------------------------------------------- Version 83: * Add flat_static_buffer::mutable_data * Add buffer_front * Add wstest compression option * Turn some flat_static_buffer_tests on * Documentation work * read_some, async_read_some return bytes used * Fix private timer::clock_type WebSocket * Add wstest compression option * Fix buffer lifetime in websocket write API Changes: * Add static_buffer Actions Required: * Callers who depend on static_buffer returning sequences of exactly length one should switch to flat_static_buffer. -------------------------------------------------------------------------------- Version 82: * Documentation tidying * is_invocable works with move-only types * Use std::function and reference wrapper * Add session_alloc to example/common * Silence spurious warning HTTP * Fix extraneous argument in async_write_header WebSocket * stream tidying * Add rd_close_ to websocket stream state * stream uses flat_buffer * accept requires a message * Add wstest benchmark tool API Changes: * Rename to flat_static_buffer and flat_static_buffer_base Actions Required: * Rename static_buffer to flat_static_buffer_base * Rename static_buffer_n to flat_static_buffer -------------------------------------------------------------------------------- Version 81: * Pass string_view by value * better is_final on empty_base_optimization * Suppress incorrect GCC warning * multi_buffer ctor is explicit * File is not copy-constructible API Changes: * Refactor basic_parser, chunk parsing: Actions Required: * Adjust signatures for required members of user-defined subclasses of basic_parser * Use the new basic_parser chunk callbacks for accessing chunk extensions and chunk bodies. -------------------------------------------------------------------------------- Version 80: * Javadoc tidying * Add basic_dynamic_body.hpp * Shrink buffer_prefix_view * Remove unused file_path * Add basic_file_body.hpp * buffers_ref is Assignable HTTP * Shrink chunk header buffer sequence size API Changes: * Refactor chunked-encoding serialization Actions Required: * Remove references to ChunkDecorators. Use the new chunk-encoding buffer sequences to manually produce a chunked payload body in the case where control over the chunk-extensions and/or trailers is required. -------------------------------------------------------------------------------- Version 79: * Remove spurious fallthrough guidance -------------------------------------------------------------------------------- Version 78: * Add span * Documentation work * Use make_unique_noinit * Fix warning in zlib * Header file tidying * Tidy up FieldsReader doc * Add Boost.Locale utf8 benchmark comparison * Tidy up dstream for existing Boost versions * Tidy up file_posix unused variable * Fix warning in root ca declaration HTTP: * Tidy up basic_string_body * Add vector_body * span, string, vector bodies are public * Fix spurious uninitialized warning * fields temp string uses allocator API Changes: * Add message::keep_alive() * Add message::chunked() and message::content_length() * Remove string_view_body Actions Required: * Change user defined implementations of Fields and FieldsReader to meet the new requirements. * Use span_body instead of string_view_body -------------------------------------------------------------------------------- Version 77: * file_posix works without large file support -------------------------------------------------------------------------------- Version 76: * Always go through write_some * Use Boost.Config * BodyReader may construct from a non-const message * Add serializer::get * Add serializer::chunked * Serializer members are not const * serializing file_body is not const * Add file_body_win32 * Fix parse illegal characters in obs-fold * Disable SSE4.2 optimizations API Changes: * Rename to serializer::keep_alive * BodyReader, BodyWriter use two-phase init Actions Required: * Use serializer::keep_alive instead of serializer::close and take the logical NOT of the return value. * Modify instances of user-defined BodyReader and BodyWriter types to perform two-phase initialization, as per the updated documented type requirements. -------------------------------------------------------------------------------- Version 75: * Use file_body for valid requests, string_body otherwise. * Construct buffer_prefix_view in-place * Shrink serializer buffers using buffers_ref * Tidy up BEAST_NO_BIG_VARIANTS * Shrink serializer buffers using buffers_ref * Add serializer::limit * file_body tests * Using SSE4.2 intrinsics in basic_parser if available -------------------------------------------------------------------------------- Version 74: * Add file_stdio and File concept * Add file_win32 * Add file_body * Remove common/file_body.hpp * Add file_posix * Fix Beast include directories for cmake targets * remove redundant flush() from example -------------------------------------------------------------------------------- Version 73: * Jamroot tweak * Verify certificates in SSL clients * Adjust benchmarks * Initialize local variable in basic_parser * Fixes for gcc-4.8 HTTP: * basic_parser optimizations * Add basic_parser tests API Changes: * Refactor header and message constructors * serializer::next replaces serializer::get Actions Required: * Evaluate each message constructor call site and adjust the constructor argument list as needed. * Use serializer::next instead of serializer::get at call sites -------------------------------------------------------------------------------- Version 72: HTTP: * Tidy up set payload in http-server-fast * Refine Body::size specification * Newly constructed responses have a 200 OK result * Refactor file_body for best practices * Add http-server-threaded example * Documentation tidying * Various improvements to http_server_fast.cpp WebSocket: * Add websocket-server-async example -------------------------------------------------------------------------------- Version 71: * Fix extra ; warning * Documentation revision * Fix spurious on_chunk invocation * Call prepare_payload in HTTP example * Check trailers in test * Fix buffer overflow handling for string_body and mutable_body * Concept check in basic_dynamic_body * Tidy up http_sync_port error check * Tidy up Jamroot /permissive- WebSockets: * Fine tune websocket op asserts * Refactor websocket composed ops * Allow close, ping, and write to happen concurrently * Fix race in websocket read op * Fix websocket write op * Add cmake options for examples and tests API Changes: * Return `std::size_t` from `Body::writer::put` Actions Required: * Return the number of bytes actually transferred from the input buffers in user defined `Body::writer::put` functions. -------------------------------------------------------------------------------- Version 70: * Serialize in one step when possible * Add basic_parser header and body limits * Add parser::on_header to set a callback * Fix BEAST_FALLTHROUGH * Fix HEAD response in file_service API Changes: * Rename to message::base * basic_parser default limits are now 1MB/8MB Actions Required: * Change calls to message::header_part() with message::base() * Call body_limit and/or header_limit as needed to adjust the limits to suitable values if the defaults are insufficient. -------------------------------------------------------------------------------- Version 69: * basic_parser optimizations * Use BEAST_FALLTHROUGH to silence warnings * Add /permissive- to msvc toolchain -------------------------------------------------------------------------------- Version 68: * Split common tests to a new project * Small speed up in fields comparisons * Adjust buffer size in fast server * Use string_ref in older Boost versions * Optimize field lookups * Add const_body, mutable_body to examples * Link statically on cmake MSVC API Changes: * Change BodyReader, BodyWriter requirements * Remove BodyReader::is_deferred * http::error::bad_target replaces bad_path Actions Required: * Change user defined instances of BodyReader and BodyWriter to meet the new requirements. * Replace references to http::error::bad_path with http::error::bad_target -------------------------------------------------------------------------------- Version 67: * Fix doc example link * Add http-server-small example * Merge stream_base to stream and tidy * Use boost::string_view * Rename to http-server-fast * Appveyor use Boost 1.64.0 * Group common example headers API Changes: * control_callback replaces ping_callback Actions Required: * Change calls to websocket::stream::ping_callback to use websocket::stream::control_callback * Change user defined ping callbacks to have the new signature and adjust the callback definition appropriately. -------------------------------------------------------------------------------- Version 66: * string_param optimizations * Add serializer request/response aliases * Make consuming_buffers smaller * Fix costly potential value-init in parser * Fix unused parameter warning * Handle bad_alloc in parser * Tidy up message piecewise ctors * Add header aliases * basic_fields optimizations * Add http-server example * Squelch spurious warning on gcc -------------------------------------------------------------------------------- Version 65: * Enable narrowing warning on msvc cmake * Fix integer types in deflate_stream::bi_reverse * Fix narrowing in static_ostream * Fix narrowing in ostream * Fix narrowing in inflate_stream * Fix narrowing in deflate_stream * Fix integer warnings * Enable unused variable warning on msvc cmake -------------------------------------------------------------------------------- Version 64: * Simplify buffered_read_stream composed op * Simplify ssl teardown composed op * Simplify websocket write_op * Exemplars are compiled code * Better User-Agent in examples * async_write requires a non-const message * Doc tidying * Add link_directories to cmake API Changes: * Remove make_serializer Actions Required: * Replace calls to make_serializer with variable declarations -------------------------------------------------------------------------------- Version 63: * Use std::to_string instead of lexical_cast * Don't use cached Boost * Put num_jobs back up on Travis * Only build and run tests in variant=coverage * Move benchmarks to a separate project * Only run the tests under ubasan * Tidy up CMakeLists.txt * Tidy up Jamfiles * Control running with valgrind explicitly -------------------------------------------------------------------------------- Version 62: * Remove libssl-dev from a Travis matrix item * Increase detail::static_ostream coverage * Add server-framework tests * Doc fixes and tidy * Tidy up namespaces in examples * Clear the error faster * Avoid explicit operator bool for error * Add http::is_fields trait * Squelch harmless not_connected errors * Put slow tests back for coverage builds API Changes: * parser requires basic_fields * Refine FieldsReader concept * message::prepare_payload replaces message::prepare Actions Required: * Callers using `parser` with Fields types other than basic_fields will need to create their own subclass of basic_parser to work with their custom fields type. * Implement chunked() and keep_alive() for user defined FieldsReader types. * Change calls to msg.prepare to msg.prepare_payload. For messages with a user-defined Fields, provide the function prepare_payload_impl in the fields type according to the Fields requirements. -------------------------------------------------------------------------------- Version 61: * Remove Spirit dependency * Use generic_cateogry for errno * Reorganize SSL examples * Tidy up some integer conversion warnings * Add message::header_part() * Tidy up names in error categories * Flush the output stream in the example * Clean close in Secure WebSocket client * Add server-framework SSL HTTP and WebSocket ports * Fix shadowing warnings * Tidy up http-crawl example * Add multi_port to server-framework * Tidy up resolver calls * Use one job on CI * Don't run slow tests on certain targets API Changes: * header::version is unsigned * status-codes is unsigned -------------------------------------------------------------------------------- Version 60: * String comparisons are public interfaces * Fix response message type in async websocket accept * New server-framework, full featured server example -------------------------------------------------------------------------------- Version 59: * Integrated Beast INTERFACE (cmake) * Fix base64 alphabet * Remove obsolete doc/README.md API Changes: * Change Body::size signature (API Change): Actions Required: * For any user-defined models of Body, change the function signature to accept `value_type const&` and modify the function definition accordingly. -------------------------------------------------------------------------------- Version 58: * Fix unaligned reads in utf8-checker * Qualify size_t in message template * Reorganize examples * Specification for http read * Avoid `std::string` in websocket * Fix basic_fields insert ordering * basic_fields::set optimization * basic_parser::put doc * Use static string in basic_fields::reader * Remove redundant code * Fix parsing chunk size with leading zeroes * Better message formal parameter names API Changes: * `basic_fields::set` renamed from `basic_fields::replace` Actions Required: * Rename calls to `basic_fields::replace` to `basic_fields::set` -------------------------------------------------------------------------------- Version 57: * Fix message.hpp javadocs * Fix warning in basic_parser.cpp * Integrate docca for documentation and tidy -------------------------------------------------------------------------------- Version 56: * Add provisional IANA header field names * Add string_view_body * Call on_chunk when the extension is empty * HTTP/1.1 is the default version * Try harder to find Boost (cmake) * Reset error codes * More basic_parser tests * Add an INTERFACE cmake target * Convert buffer in range loops -------------------------------------------------------------------------------- Version 55: * Don't allocate memory to handle obs-fold * Avoid a parser allocation using non-flat buffer * read_size replaces read_size_helper -------------------------------------------------------------------------------- Version 54: * static_buffer coverage * flat_buffer coverage * multi_buffer coverage * consuming_buffers members and coverage * basic_fields members and coverage * Add string_param * Retain ownership when reading using a message * Fix incorrect use of [[fallthrough]] API Changes: * basic_fields refactor -------------------------------------------------------------------------------- Version 53: * Fix basic_parser::maybe_flatten * Fix read_size_helper usage -------------------------------------------------------------------------------- Version 52: * flat_buffer is an AllocatorAwareContainer * Add drain_buffer class API Changes: * `auto_fragment` is a member of `stream` * `binary`, `text` are members of `stream` * read_buffer_size is a member of `stream` * read_message_max is a member of `stream` * `write_buffer_size` is a member of `stream` * `ping_callback` is a member of stream * Remove `opcode` from `read`, `async_read` * `read_frame` returns `bool` fin * `opcode` is private * finish(error_code&) is a BodyReader requirement Actions Required: * Change call sites which use `auto_fragment` with `set_option` to call `stream::auto_fragment` instead. * Change call sites which use message_type with `set_option` to call `stream::binary` or `stream::text` instead. * Change call sites which use `read_buffer_size` with `set_option` to call `stream::read_buffer_size` instead. * Change call sites which use `read_message_max` with `set_option` to call `stream::read_message_max` instead. * Change call sites which use `write_buffer_size` with `set_option` to call `stream::write_buffer_size` instead. * Change call sites which use `ping_callback1 with `set_option` to call `stream::ping_callback` instead. * Remove the `opcode` reference parameter from calls to synchronous and asynchronous read functions, replace the logic with calls to `stream::got_binary` and `stream::got_text` instead. * Remove the `frame_info` parameter from all read frame call sites * Check the return value 'fin' for calls to `read_frame` * Change ReadHandlers passed to `async_read_frame` to have the signature `void(error_code, bool fin)`, use the `bool` to indicate if the frame is the last frame. * Remove all occurrences of the `opcode` enum at call sites -------------------------------------------------------------------------------- Version 51 * Fix operator<< for header * Tidy up file_body * Fix file_body::get() not setting the more flag correctly * Use BOOST_FALLTHROUGH * Use BOOST_STRINGIZE * DynamicBuffer benchmarks * Add construct, destroy to handler_alloc * Fix infinite loop in basic_parser API Changes: * Tune up static_buffer * multi_buffer implementation change Actions Required: * Call sites passing a number to multi_buffer's constructor will need to be adjusted, see the corresponding commit message. -------------------------------------------------------------------------------- Version 50 * parser is constructible from other body types * Add field enumeration * Use allocator more in basic_fields * Fix basic_fields allocator awareness * Use field in basic_fields and call sites * Use field in basic_parser * Tidy up basic_fields, header, and field concepts * Fields concept work * Body documentation work * Add missing handler_alloc nested types * Fix chunk delimiter parsing * Fix test::pipe read_size * Fix chunk header parsing API Changes: * Remove header_parser * Add verb to on_request for parsers * Refactor prepare * Protect basic_fields special members * Remove message connection settings * Remove message free functions * Remove obsolete serializer allocator * http read_some, async_read_some don't return bytes -------------------------------------------------------------------------------- Version 49 * Use instead of HTTP: * Add HEAD request example API Changes: * Refactor method and verb * Canonicalize string_view parameter types * Tidy up empty_body writer error * Refactor header status, reason, and target -------------------------------------------------------------------------------- Version 48 * Make buffer_prefix_view public * Remove detail::sync_ostream * Tidy up core type traits API Changes: * Tidy up chunk decorator * Rename to buffer_cat_view * Consolidate parsers to parser.hpp * Rename to parser -------------------------------------------------------------------------------- Version 47 * Disable operator<< for buffer_body * buffer_size overload for basic_multi_buffer::const_buffers_type * Fix undefined behavior in pausation * Fix leak in basic_flat_buffer API Changes: * Refactor treatment of request-method * Refactor treatment of status code and obsolete reason * Refactor HTTP serialization and parsing -------------------------------------------------------------------------------- Version 46 * Add test::pipe * Documentation work API Changes: * Remove HTTP header aliases * Refactor HTTP serialization * Refactor type traits -------------------------------------------------------------------------------- Version 45 * Workaround for boost::asio::basic_streambuf type check * Fix message doc image * Better test::enable_yield_to * Fix header::reason * Documentation work * buffer_view skips empty buffer sequences * Disable reverse_iterator buffer_view test -------------------------------------------------------------------------------- Version 44 * Use BOOST_THROW_EXCEPTION * Tidy up read_size_helper and dynamic buffers * Require Boost 1.58.0 or later * Tidy up and make get_lowest_layer public * Use BOOST_STATIC_ASSERT * Fix async return values in docs * Fix README websocket example * Add buffers_adapter regression test * Tidy up is_dynamic_buffer traits test * Make buffers_adapter meet requirements -------------------------------------------------------------------------------- Version 43 * Require Boost 1.64.0 * Fix strict aliasing warnings in buffers_view * Tidy up buffer_prefix overloads and test * Add write limit to test::string_ostream * Additional constructors for consuming_buffers -------------------------------------------------------------------------------- Version 42 * Fix javadoc typo * Add formal review notes * Make buffers_view a public interface -------------------------------------------------------------------------------- Version 41 * Trim Appveyor matrix rows * Concept revision and documentation * Remove coveralls integration * Tidy up formal parameter names WebSocket * Tidy up websocket::close_code enum and constructors API Changes * Return http::error::end_of_stream on HTTP read eof * Remove placeholders * Rename prepare_buffer(s) to buffer_prefix * Remove handler helpers, tidy up hook invocations -------------------------------------------------------------------------------- Version 40 * Add to_static_string * Consolidate get_lowest_layer in type_traits.hpp * Fix basic_streambuf movable trait * Tidy up .travis.yml -------------------------------------------------------------------------------- Version 39 Beast versions are now identified by a single integer which is incremented on each merge. The macro BEAST_VERSION identifies the version number, currently at 39. A version setting commit will always be at the tip of the master and develop branches. * Use beast::string_view alias * Fixed braced-init error with older gcc HTTP * Tidy up basic_parser javadocs WebSocket: * Add websocket async echo ssl server test: * Fix eof error on ssl::stream shutdown API Changes: * Refactor http::header contents * New ostream() returns dynamic buffer output stream * New buffers() replaces to_string() * Rename to multi_buffer, basic_multi_buffer * Rename to flat_buffer, basic_flat_buffer * Rename to static_buffer, static_buffer_n * Rename to buffered_read_stream * Harmonize concepts and identifiers with net-ts * Tidy up HTTP reason_string -------------------------------------------------------------------------------- 1.0.0-b38 * Refactor static_string * Refactor base64 * Use static_string for WebSocket handshakes * Simplify get_lowest_layer test * Add test_allocator to extras/test * More flat_streambuf tests * WebSocket doc work * Prevent basic_fields operator[] assignment API Changes: * Refactor WebSocket error codes * Remove websocket::keep_alive option -------------------------------------------------------------------------------- 1.0.0-b37 * CMake hide command lines in .vcxproj Output windows" * Rename to detail::is_invocable * Rename project to http-bench * Fix flat_streambuf * Add ub sanitizer blacklist * Add -funsigned-char to asan build target * Fix narrowing warning in table constants WebSocket: * Add is_upgrade() free function * Document websocket::stream thread safety * Rename to websocket::detail::pausation API Changes: * Provide websocket::stream accept() overloads * Refactor websocket decorators * Move everything in basic_fields.hpp to fields.hpp * Rename to http::dynamic_body, consolidate header -------------------------------------------------------------------------------- 1.0.0-b36 * Update README.md -------------------------------------------------------------------------------- 1.0.0-b35 * Add Appveyor build scripts and badge * Tidy up MSVC CMake configuration * Make close_code a proper enum * Add flat_streambuf * Rename to BEAST_DOXYGEN * Update .gitignore for VS2017 * Fix README.md CMake instructions API Changes: * New HTTP interfaces * Remove http::empty_body -------------------------------------------------------------------------------- 1.0.0-b34 * Fix and tidy up CMake build scripts -------------------------------------------------------------------------------- 1.0.0-b33 * Require Visual Studio 2015 Update 3 or later HTTP * Use fwrite return value in file_body WebSocket * Set internal state correctly when writing frames * Add decorator unit test * Add write_frames unit test -------------------------------------------------------------------------------- 1.0.0-b32 * Add io_service completion invariants test * Update CMake scripts for finding packages API Changes: * Remove http Writer suspend and resume feature -------------------------------------------------------------------------------- 1.0.0-b31 * Tidy up build settings * Add missing dynabuf_readstream member WebSocket * Move the handler, don't copy it -------------------------------------------------------------------------------- 1.0.0-b30 WebSocket * Fix race in pings during reads * Fix race in close frames during reads * Fix race when write suspends * Allow concurrent websocket async ping and writes -------------------------------------------------------------------------------- 1.0.0-b29 * Fix compilation error in non-template class * Document type-pun in buffer_cat * Correctly check ostream modifier (/extras) HTTP * Fix Body requirements doc * Fix illegal HTTP characters accepted as hex zero * Fix Writer return value documentation WebSocket * Fix race in writes during reads * Fix doc link typo -------------------------------------------------------------------------------- 1.0.0-b28 * Split out and rename test stream classes * Restyle async result constructions * Fix HTTP split parse edge case -------------------------------------------------------------------------------- 1.0.0-b27 * Tidy up tests and docs * Add documentation building instructions API Changes: * Invoke callback on pings and pongs * Move basic_streambuf to streambuf.hpp -------------------------------------------------------------------------------- 1.0.0-b26 * Tidy up warnings and tests -------------------------------------------------------------------------------- 1.0.0-b25 * Fixes for WebSocket echo server * Fix 32-bit arm7 warnings * Remove unnecessary include * WebSocket server examples and test tidying * Fix deflate setup bug API Changes: * Better handler_ptr -------------------------------------------------------------------------------- 1.0.0-b24 * bjam use clang on MACOSX * Simplify Travis package install specification * Add optional yield_to arguments * Make decorator copyable * Add WebSocket permessage-deflate extension support -------------------------------------------------------------------------------- 1.0.0-b23 * Tune websocket echo server for performance * Add file and line number to thrown exceptions * Better logging in async echo server * Add copy special members * Fix message constructor and special members * Travis CI improvements -------------------------------------------------------------------------------- 1.0.0-b22 * Fix broken Intellisense * Implement the Asio deallocation-before-invocation guarantee * Add handler helpers * Avoid copies in handler_alloc * Update README.md example programs * Fix websocket stream read documentation * Disable Boost.Coroutine deprecation warning * Update documentation examples -------------------------------------------------------------------------------- 1.0.0-b21 * Remove extraneous includes -------------------------------------------------------------------------------- 1.0.0-b20 ZLib * Add ZLib module API Changes: * Rename HTTP identifiers -------------------------------------------------------------------------------- 1.0.0-b19 * Boost library min/max guidance * Improvements to code coverage * Use boost::lexical_cast instead of std::to_string * Fix prepare_buffers value_type * Fix consuming_buffers value_type * Better buffer_cat HTTP * Make chunk_encode public * Add write, async_write, operator<< for message_headers * Add read, async_read for message_headers * Fix with_body example WebSocket * Optimize utf8 validation * Optimize mask operations API Changes: * Refactor message and message_headers declarations * prepared_buffers is private * consume_buffers is removed -------------------------------------------------------------------------------- 1.0.0-b18 * Increase optimization settings for MSVC builds HTTP * Check invariants in parse_op: * Clean up message docs WebSocket * Write buffer option does not change capacity * Close connection during async_read on close frame * Add pong, async pong to stream Core * Meet DynamicBuffer requirements for static_streambuf * Fix write_frame masking and auto-fragment handling Extras * unit_test::suite fixes: - New overload of fail() specifies file and line - BEAST_EXPECTS only evaluates the reason string on a failure * Add zlib module -------------------------------------------------------------------------------- 1.0.0-b17 * Change implicit to default value in example * Tidy up some declarations * Fix basic_streambuf::capacity * Add basic_streambuf::alloc_size * Parser callbacks may not throw * Fix Reader concept doc typo * Add is_Reader trait * Tidy up basic_headers for documentation * Tidy up documentation * Add basic_parser_v1::reset * Fix handling of body_what::pause in basic_parser_v1 * Add headers_parser * Engaged invokable is destructible * Improve websocket example in README.md * Refactor read_size_helper API Changes: * Added init() to Reader requirements * Reader must be nothrow constructible * Reader is now constructed right before reading the body - The message passed on construction is filled in * Rework HTTP concepts: - Writer uses write instead of operator() - Refactor traits to use void_t - Remove is_ReadableBody, is_WritableBody - Add has_reader, has_writer, is_Reader, is_Writer - More friendly compile errors on failed concept checks * basic_parser_v1 requires all callbacks present * on_headers parser callback now returns void * on_body_what is a new required parser callback returning body_what -------------------------------------------------------------------------------- 1.0.0-b16 * Make value optional in param-list * Frame processing routines are member functions * Fix on_headers called twice from basic_parser_v1 * Constrain parser_v1 constructor * Improve first line serialization * Add pause option to on_headers interface * Refactor base_parser_v1 callback traits: * Refine Parser concept * Relax ForwardIterator requirements in FieldSequence * Fix websocket failure testing * Refine Writer concept and fix exemplar in documentation API Changes: * Rename mask_buffer_size to write_buffer_size * Make auto_fragment a boolean option The message class hierarchy is refactored (breaking change): * One message class now models both HTTP/1 and HTTP/2 messages * message_v1, request_v1, response_v1 removed * New classes basic_request and basic_response model messages without the body. Error resolution: Callers should use message, request, and response instead of message_v1, request_v1, and response_v1 respectively. -------------------------------------------------------------------------------- 1.0.0-b15 * rfc7230 section 3.3.2 compliance * Add HTTPS example * Add Secure WebSocket example * Fix message_v1 constructor * Tidy up DynamicBuffer requirements * Tidy up error types and headers * Fix handling empty HTTP headers in parser_v1 -------------------------------------------------------------------------------- 1.0.0-b14 * Add missing rebind to handler_alloc * Fix error handling in http server examples * Fix CMake scripts for MinGW * Use BOOST_ASSERT * Better WebSocket decorator * Update and tidy documentation -------------------------------------------------------------------------------- 1.0.0-b13 * dstream improvements * Remove bin and bin64 directories * Tidy up .vcxproj file groupings -------------------------------------------------------------------------------- 1.0.0-b12 * Use -p to print suites from unit test main. * BEAST_EXPECTS to add a reason string to test failures * Fix unit test runner to output all case names * Update README for build requirements * Rename to CHANGELOG.md -------------------------------------------------------------------------------- 1.0.0-b11 * Set URI in generated WebSocket Upgrade requests * Rename echo server class and file names * Rename to DynamicBuffer in some code and documentation * Fix integer warnings in Windows builds * Add 32 and 64 bit Windows build support * Update README for build instructions and more * Add repository and documentation banners -------------------------------------------------------------------------------- 1.0.0-b10 * Fix compilation warnings * Add websocketpp comparison to HTML documentation -------------------------------------------------------------------------------- 1.0.0-b9 * Fix CMakeLists.txt -------------------------------------------------------------------------------- 1.0.0-b8 * Fix include in example code * Fix basic_headers rfc2616 Section 4.2 compliance -------------------------------------------------------------------------------- 1.0.0-b7 * Fix prepare by calling init. prepare() can throw depending on the implementation of Writer. Publicly provided beast::http writers never throw. * Fixes to example HTTP server * Fully qualify ambiguous calls to read and parse * Remove deprecated http::stream wrapper * Example HTTP server now calculates the MIME-type * Fixes and documentation for teardown and use with SSL: * Add example code to rfc7230 javadocs * Remove extraneous header file * Add skip_body parser option -------------------------------------------------------------------------------- 1.0.0-b6 * Use SFINAE on return values * Use beast::error_code instead of nested types * Tidy up use of GENERATING_DOCS * Remove obsolete RFC2616 functions * Add message swap members and free functions * Add HTTP field value parser containers: ext_list, param_list, token_list * Fixes for some corner cases in basic_parser_v1 * Configurable limits on headers and body sizes in basic_parser_v1 API Changes: * ci_equal is moved to beast::http namespace, in rfc7230.hpp * "DynamicBuffer","dynabuf" renamed from "Streambuf", "streambuf". See: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4478.html#requirements.dynamic_buffers * basic_parser_v1 adheres to rfc7230 as strictly as possible --------------------------------------------------------------------------------