Commit Graph
330 Commits
Author SHA1 Message Date
compmaniak 802390886d Fix parse_dec algorithm
fix #1211
2018-07-29 17:05:11 -07:00
felixguendling ba4bdfed71 Fix http_server_stackless_ssl.cpp example
fix #1210

Write to self_.stream_ instead of the socket_ directly
2018-07-28 07:00:51 -07:00
Vinnie Falco dd6dff92ab Typo in release notes 2018-07-15 08:32:52 -07:00
Vinnie Falco e9e5d159c6 Set version to 177 2018-07-12 11:10:00 -07:00
Vinnie Falco 749e54f31b Generated WebSocket masks use a secure PRNG by default:
This resolves a medium vulnerability described in the
Beast Hybrid Assessment Report by Bishop Fox, where masks generated
for use with outgoing WebSocket client frames use an insufficient
source of entropy and a non-cryptographically secure pseudo-random
number generator.

By default, all newly constructed WebSocket streams will use a
uniquely seeded secure PRNG (ChaCha20 in counter mode). As this may
result in increased CPU resource consumption, the function
websocket::stream::secure_prng() may be used to select a faster but
less secure PRNG, for the case where the caller knows that the secure
generator is not necessary.

On some systems, std::random_device may produce insufficient entropy
to securely seed the PRNG. As this condition cannot be detected by
Beast, callers may use the function websocket::seed_prng() called
once at startup to provide at least 256 bits of entropy which will
be used to uniquely seed all subsequent PRNGs.
2018-07-08 15:20:05 -07:00
Vinnie Falco 20eb6af42d Tidy up Quick Reference 2018-07-04 14:35:59 -07:00
Vinnie Falco e97d70d329 Update Release Notes 2018-06-29 10:05:55 -07:00
Vinnie Falco 436f6f96b1 Fix BodyReader constructor requirements doc 2018-06-18 11:09:50 -07:00
Vinnie Falco 37c90220d0 Fix Fields, FieldsWriter concept docs 2018-06-18 08:42:24 -07:00
Vinnie Falco 6647e9ea56 Add experimental icy_stream Shoutcast stream filter:
fix #595, fix #1151

This provides a stream filter which converts the ICY HTTP
response handshake at the beginning of a stream to HTTP/1.1.
2018-06-09 21:12:01 -07:00
Vinnie Falco c9298f6522 Remove Autobahn testsuite doc note 2018-05-31 06:27:00 -07:00
Vinnie Falco 5b1022d63e Tidy up composed operation doc
fix #1141
2018-05-29 15:33:55 -07:00
Vinnie Falco f5def127d8 Tidy up test::stream javadocs 2018-05-29 15:32:01 -07:00
Vinnie Falco 07aead170a Add is_mutable_body_writer metafunction 2018-05-04 19:34:05 -07:00
Vinnie Falco 73bc28aaa2 Remove deprecated serializer::reader_impl() 2018-05-03 19:42:36 -07:00
Vinnie Falco a94efc8c92 Add test::stream to experimental 2018-05-02 08:32:09 -07:00
Vinnie Falco e4c2ae6384 Add test::fail_count to experimental 2018-05-02 08:32:09 -07:00
Vinnie Falco 292801fef7 Add ssl_stream to experimental:
The ssl_stream wrapper provides C++11 move semantics for ssl::stream,
as well as incorporating the flat_stream workaround for a performance
problem with ssl::stream writes and buffer sequences having length
greater than one.
2018-05-02 08:32:09 -07:00
Vinnie Falco 6108cf3eb7 Add flat_stream to experimental:
This adds a new stream wrapper class template designed to address
a performance shortcoming of boost::asio::ssl::stream.
2018-05-02 08:32:07 -07:00
Vinnie Falco c9a445a937 New flat_stream example class:
fix #1108

The `flat_stream` is a stream wrapper designed to overcome a
performance limitation of the `boost::asio::ssl::stream`
implementation. Specifically, when writing buffer sequences having
length greater than one, the `ssl::stream` implementation does
not use scatter-gather I/O and instead performs a kernel transition
for every buffer in the sequence.

The wrapper addresses this problem by allocating memory and
presenting the buffer sequence into a single buffer, using
some logic to determine when this allocation is advantageous
versus simply passing the buffers through as-is.

See Also:
https://github.com/boostorg/asio/issues/100
https://stackoverflow.com/questions/50026167/performance-drop-on-port-from-beast-1-0-0-b66-to-boost-1-67-0-beast
2018-04-30 19:49:42 -07:00
Vinnie Falco 86342dd72b Use executor_work_guard in composed operations:
fix #1076

As per Asio and Networking TS requirements, composed operations must
maintain an object of type executor_work_guard for the executor associated
with the I/O object, for the lifetime of the asynchronous operation.

This is in addition to the requirement for maintaining an object of type
executor_work_guard for the executor associated with the handler.
2018-04-10 08:03:04 -07:00
Ivan Vilata-i-Balaguer edd162cf3b Add Access-Control-Expose-Headers field constant:
This response header is described both in [CORS](https://www.w3.org/TR/cors/)
and [Fetch](https://fetch.spec.whatwg.org/) specifications.
2018-03-09 09:29:14 -08:00
Vinnie Falco 726118468b Add asio_handler_invoke overloads for stream algorithms:
fix #1012

This fixes a bug where asynchronous stream alogrithms do not
work correctly with the legacy `io_service::strand` implementation.
2018-03-01 08:31:57 -08:00
Vinnie Falco 04ced3b954 Examples clear the HTTP message before reading
fix #1043
2018-02-27 08:12:54 -08:00
Vinnie Falco 5d5e58c5b4 Some basic_fields operations now give the strong exception guarantee 2018-02-26 17:09:47 -08:00
Vinnie Falco 9f094518bc Safe treatment of zero-length string arguments in basic_fields:
This fixes a broken memcpy precondition when empty strings are
passed as arguments to basic_fields member functions.
2018-02-26 17:09:20 -08:00
Vinnie Falco a8a5fa9f6c Fix typo in release notes 2018-02-26 17:09:01 -08:00
Vinnie Falco eae74b1c89 get_lowest_layer is a type alias:
fix #941, fix #1016

`get_lowest_layer` is now a type alias for the
lowest layer instead of a struct with a nested type.

Actions required:

* Replace instances of `typename get_lowest_layer<T>::type`
  with `get_lowest_layer<T>`.
2018-02-21 14:49:44 -08:00
Vinnie Falco 66f0814cfd Tidy up some documentation
fix #984
2018-02-21 13:58:43 -08:00
Vinnie Falco d79950d95c DynamicBuffer input areas are not mutable
fix #1014
2018-02-21 13:19:14 -08:00
Vinnie Falco 10ce0283c2 Advanced servers support clean shutdown via SIGINT or SIGTERM
fix #1026
2018-02-21 12:44:11 -08:00
Vinnie Falco a4714746dc Examples set reuse_address(true)
fix #1027
2018-02-21 12:35:07 -08:00
Vinnie Falco 490b9ce893 Tidy up websocket docs
fix #1035
2018-02-21 12:10:26 -08:00
Vinnie Falco c505e32210 Fix big-endian websocket masking
fix #1030
2018-02-21 06:35:32 -08:00
Vinnie Falco 593ccb15cd Fix teardown for TIME_WAIT
fix #1024, fix #1029
2018-02-20 04:33:43 -08:00
Vinnie Falco 1b56105350 Update docca subtree:
Merge commit 'ad4d852e7bcf2edea0ef211f4a4fcb67a2c0795f' into v156
2018-02-19 18:36:44 -08:00
Vinnie Falco b249d6f868 Fix stale link for void-or-deduced 2018-02-19 18:36:31 -08:00
Vinnie Falco b68db30ba6 Add release notes to documentation 2018-02-19 18:36:31 -08:00
Vinnie Falco 38e580e49d Add Bishop Fox interview media 2018-01-25 06:02:43 -08:00
Vinnie Falco cc43b46c42 Refactor WebSocket errors (API Change):
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.
2018-01-12 07:35:26 -08:00
Vinnie Falco 841ab8474b permessage-deflate is a compile-time feature (API Change):
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.
2017-12-30 13:23:41 -08:00
Vinnie Falco 4a4d535d98 Documentation 2017-12-15 09:27:40 -08:00
Damian Jarek b76ab4450a New BodyReader and BodyWriter constructors (API Change):
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).
2017-12-15 09:27:39 -08:00
Vinnie Falco 1b86bc3c36 Update reports for hybrid assessment 2017-12-04 12:05:27 -08:00
p-kalugin fb0d82245f Fix typo in examples documentation 2017-11-26 09:55:38 -08:00
Vinnie Falco 9d941f2655 Documentation tidying 2017-11-22 10:29:19 -08:00
Vinnie Falco a4a2ee8806 Fix autobahn report link 2017-11-13 12:18:30 -08:00
Vinnie Falco afca4cc277 Warn about upcoming API changes to certain concepts 2017-11-11 09:13:05 -08:00
Vinnie Falco fdd02d9ee7 Tidy up some documented constructor syntax 2017-11-03 19:41:34 -07:00
Vinnie Falco 327ebc2007 Add FieldsWriter constructor requirement
fix #864
2017-11-03 19:36:35 -07:00