- Use a regular function pointer for dynamic dispatch.
- Remove `prng::ref` - it did not benefit the default case
(TLS avaialable) and actually made the no-TLS case slower, because
the time spent in the generator is dominated by mutex locking.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
An object returned from a function is not guaranteed not to be copied
in C++14 or earlier, using `initializer_list` removes the reliance on
RVO to work.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
* Allow setting a seed in websocket prng to workaround a valgrind bug
in Xenial.
* Coverage collection in Azp.
* Fixup blacklists to avoid zlib bugs.
* Use native b2 features for sanitizers and valgrind.
* Expanded Windows build matrix.
* Add additional clang (with libc++) builds.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
- Don't set the global link settings (`<link>`) to avoid dependency
ordering issues in the future.
- Allow the user to decide on the link settings for dependencies
(filesystem/coroutine).
- Make dependencies in examples explicit.
- Remove dependency of examples on Boost.Filesystem (was not used there).
- Deduplicate build settings.
- Speed up test compilation by avoiding rebuilding of main test file.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
- don't assume layout or size overhead of classes with
virtual members (use split vtable)
- don't use SOO for types with throwing move
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
fix#38
This improves the behavior when encountering a short read:
* Any stream error encountered during a read is converting into
`http::error::partial_message` if some data was received but
the message is incomplete.
* Examples squelch SSL short read errors from the logs.
This changes the interface used to apply a decorator to the HTTP
request or response messages used to perform the WebSocket handshake
as follows:
* Add the `stream_base::decorator` option object
* Add `stream::set_option` overload to set the decorator from
the option
* The decorator applies to all client and server handshakes
performed on the stream after the option is set.
* 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.