This version fixes a missing executor work guard in all composed operations used in the implementation. Users who are experiencing crashes related to asynchronous completion handlers are encouraged to upgrade. Also included is an improved mechanism for generating random numbers used to mask outgoing websocket frames when operating in the client mode. This resolves a vulnerability described in the Beast Hybrid Assessment Report from Bishop Fox.
The include directory
<beast/experimental> contains features which are not part of
the stable public interface but are available anyway. They may change in future
flat_streamfor working around an SSL stream performance limitation
http::icy_streamstream filter allows parsing ICY HTTP response handshakes
ssl_streamfor better SSL performance and move constructability
test::streamutilities for writing unit tests.
websocket::seed_prngfor manually providing entropy to the PRNG
websocket::stream::secure_prngto control whether the connection uses a secure PRNG
constoverloads for message based HTTP writes
buffers_adapteriterator value type
This version fixes significant defects in
websocket::stream which can lead to asserts or
undefined behavior. Users are encouraged to update to the latest Boost release.
booltemplate parameter to
true, the stream will be capable of negotiating the permessage-deflate websocket extension per the configured run-time settings. When
false, the stream will never negotiate the permessage-deflate websocket extension. Furthermore, all of the code necessary for implementing the permessage-deflate extension will be excluded from function instantiations. Programs which set
falsewhen instantiating streams will be smaller.
websocket::error::handshake_failedare removed. Actions required: Code which explicitly compares
error_codevalues against the constant
websocket::error::handshake_failedshould compare against
websocket::condition::handshake_failedinstead. Code which explicitly compares error_code values against the constant
websocket::error::failedshould compare against
http::basic_fieldsuses less storage
http::basic_fieldsexception specifiers are provided
bind_handlerworks with boost placeholders
ssl_streamspecial members in example/common/ssl_stream.hpp
<algorithm>are protected from macros
"ws_.wr_block_ == tok_".
handler_ptr. Actions required: don't call non-public members.
handler_ptris a move-only type, with
unique_ptrsemantics. Actions required: user-defined composed operations using
handler_ptrto manage state can only be moved, not copied.
handler_ptrgives the strong exception guarantee. The constructor signature for managed objects constructed by
handler_ptrnow receives a
constreference to the handler. Actions required: Change the constructor signature for state objects used with
handler_ptrto receive a
constreference to the handler.
http::basic_fieldsdoes not support fancy pointers
http::parseris no longer MoveConstructible
http::serializer::reader_implis deprecated and will be removed in the next release. Actions required: Call
value_typeobjects. This enables the composition of body types. The previous single-argument constructors are deprecated and will be removed in the next version. Actions required: Change user-defined instances of BodyReader or BodyWriter constructor signatures to the two-argument form. Alternatively. define the macro
BOOST_BEAST_ALLOW_DEPRECATEDin the project (which will cause both the new and the deprecated signatures to be accepted).
websocket::stream::control_callbacknow copies or moves the function object.
get_lowest_layeris now a type alias. Actions required: Replace instances of