In Boost.System, `boost::system::errc` is a namespace
containing ints. In C++11, std::errc is an enum marked
as an `error_condition`.
`error_code::assign` is specified as taking an int only,
while make_error_code is able to deal correctly with both forms.
fix#949
* New error codes are introduced for WebSocket failures
* More verbose messages for error codes
* Error codes are mapped to conditions for ease of testing
* error::failed and error::handshake_failed are deprecated (don't use)
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.
fix#849
This adds an additional `bool` template parameter to
`websocket::stream`:
* When deflateSupported is `true`, the stream will be capable
of negotiating the permessage-deflate websocket extension per
the configured run-time settings.
* When deflateSupported is `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. The resulting emitted
object code should be smaller.
fix#884
* BodyReader and BodyWriter constructors now require the header and
body elements to be passed as distinct header and value_type objects.
This enables the composition of body types, for example:
http::response<compressed_body<http::string_body>> res;
* The previous single-argument constructors are deprecated and will be
removed in a subsequent version.
Actions Required:
* Change user-defined instances of BodyReader or BodyWriter constructor
signatures to the two-argument form.
OR
* Define the macro BOOST_BEAST_ALLOW_DEPRECATED in the project (which
will accept both the new and the deprecated signatures).
fix#930
* The function serializer::reader_impl is deprecated and will
be removed in a subsequent version.
* Some private symbols used in the implementation were
also renamed to reflect correct terminology.
Actions Required:
* Call serializer::writer_impl instead of reader_impl
Split the websocket read test to reduce compile time memory usage
by a small amount, which ought to be enough to let it compile in
a constrained environment like Travis.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
* The handler_ptr constructor now provides the
strong exception guarantee.
* The signature for managed objects constructed by
`handler_ptr` receives a const reference to the handler.
Actions required:
* Change the constructor signature for state objects
used with handler_ptr to receive a const reference to
the handler.
This fixes a problem where an assert is generated or an
error is ignored when an invalid deflate stream is produced
after appending the final empty deflate block.
This fixes a problem where an assert is generated or an
error is ignored when an invalid deflate stream is produced
after appending the final empty deflate block.
fix#899
The timer logic for the advanced-server and advanced-server-flex
examples is refactored to use idle pings when the connection has
not seen activity for some period of time. This demonstrates the
use of the stream's control_callback interface.
The function stream::control_callback now copies or moves
the callback. In some cases this may require a dynamic
allocation.
To avoid the possibility of a dynamic allocation, callers
may wrap their callback using `std::ref` before setting it.