Commit Graph
112 Commits
Author SHA1 Message Date
Vinnie Falco 8ea282ee5e flat_static_buffer improvements (API Change):
* Revise documentation
* Specify exception safety
* Mark more functions noexcept

API Changes:

* flat_static_buffer::reset is deprecated

Actions Required:

* Replace calls to flat_static_buffer::reset with
  flat_static_buffer::clear
2018-12-12 19:32:22 -08:00
Vinnie Falco 3e695d588a static_buffer improvements:
* Revise documentation
* Specify exception safety
* Mark more functions noexcept
2018-12-12 19:32:21 -08:00
Vinnie Falco 4fec064ad8 Files return errc::bad_file_descriptor (API Change):
fix #1356

* File functions return errc::bad_file_descriptor
  instead of errc::invalid_argument.

Actions Required:

* Callers checking for errc::invalid_argument from calls to
  file APIs should check for errc::bad_file_descriptor instead.
2018-12-12 19:32:21 -08:00
Vinnie Falco 8262405064 multi_buffer improvements:
fix #1345

* Revise documentation
* Add reserve() member
* Add max_size() member
* Add shrink_to_fit() member
* Respect Allocator max_size
* Specify exception safety
2018-12-12 19:32:21 -08:00
Vinnie Falco 11c71d118f flat_buffer improvements:
fix #1345

* Revise documentation
* Add reserve() member
* Add max_size() member
* Respect Allocator max_size
* Specify exception safety
2018-12-12 19:32:21 -08:00
Vinnie Falco 35e4f321bc Refactor HTTP operations (API Change):
* Revise stream algorithm javadocs

* HTTP stream algorithms now use beast::read and
  beast::async_read with a custom completion condition.

API Changes:

* HTTP stream algorithms return the number of bytes transferred
  from the stream. Previously, they returned the number of bytes
  consumed by the parser.

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.
2018-12-06 15:50:26 -08:00
Damian Jarek 34037d538e Simplify handler_ptr:
Replace aligned_union in handler_ptr with the built-in one to reduce
the number of template instantiations and remove the reinterpret_casts
that were required.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-12-02 20:23:18 -08:00
Damian Jarek 587929edf6 Remove unused type_traits
close #1337

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-12-02 19:51:34 -08:00
Vinnie Falco 773048c551 Simplify multi_buffer and static_buffer sequences 2018-12-02 17:52:01 -08:00
Vinnie Falco f995fd41a3 net is a namespace alias for boost::asio:
The namespace alias beast::net replaces boost::asio in all code
and documentation.
2018-12-02 17:51:43 -08:00
Vinnie Falco 29cf6ce61f Dynamic buffers improvements:
fix #1305

Applies to:

    flat_buffer
    flat_static_buffer
    multi_buffer
    static_buffer

Changes:

* Revised all javadocs
* Move construction does not invalidate in some cases
* non-const data() returns a mutable buffer sequence
* Add cdata() to also return constant readable bytes
* Eligible member functions are declared noexcept
2018-11-30 13:46:56 -08:00
Vinnie Falco 49cdabca19 Add net namespace alias 2018-11-27 10:24:24 -08:00
Damian Jarek 836042fd24 Fix test::stream async_result transformation:
close #1322

async initiating functions must return init.result.get(). Returning the
result of post caused a compilation failure for custom completion tokens.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-26 16:02:44 -08:00
Vinnie Falco 02fb4983f6 Fixes to timeout services (experimental) 2018-11-26 15:30:49 -08:00
Damian Jarek c0e5d1bd76 Use mp11::integer_sequence
Close #1317

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-26 15:30:48 -08:00
Vinnie Falco 2585625459 Fix static_string uninitialized warning 2018-11-22 08:08:55 -08:00
Damian Jarek b9eb1d75d9 Fix buffers_cat uninitialized warning
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-22 08:07:10 -08:00
Damian Jarek 13322fa4bb Use mp11 in detail::variant
Reduce compilation cost for all components dependent on variant.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-22 07:39:26 -08:00
Damian Jarek 98ff568371 Use lean_tuple in bind_handler, bind_front_handler 2018-11-21 12:47:59 -08:00
Damian Jarek d40255b357 Use lean_tuple in buffers_cat
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-21 12:47:38 -08:00
Damian Jarek b97169f26b Add detail::lean_tuple
Provides a subset of std::tuple functionality, for internal use
to reduce the resources required during compilation.

Does not support reference-like semantics on assignment.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-21 12:47:38 -08:00
Damian Jarek 65827558b8 Simplify some type traits:
Several type traits are simplified and optimized to
reduce compile time and memory consumption.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-21 12:47:38 -08:00
Vinnie Falco 15dd535c24 Use bind_front_handler:
The implementation uses bind_front_handler to reduce the
resources consumed when instantiating templates during
compilation.
2018-11-21 12:47:38 -08:00
Vinnie Falco d581bcc348 Add bind_front_handler:
This works similarly to bind_handler, and can help with reducing
template instantiations and compiler memory usage (since it does
not need to support placeholders).

A specialization for the most common case `void(error_code, size_t)`
is provided to minimize instantiation cost.
2018-11-21 12:47:38 -08:00
Damian Jarek 5ade2a5050 Tidying:
fix #1311, fix #1310, fix #1309

* Remove unused include directive
* Remove redundant static_assert
* Remove redundant use of bind_handler

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-20 18:07:35 -08:00
Vinnie Falco 071cab92d5 Add buffers_range 2018-11-12 06:39:36 -08:00
Vinnie Falco 450964b78f Squashed 'doc/docca/' changes from 1bfc5ede..df9bd956
df9bd956 Add deduced alias
220ded9a Add see-below alias

git-subtree-dir: doc/docca
git-subtree-split: df9bd956e2480467447c80ffae3b44b3c0b0756a
2018-11-11 22:25:56 -08:00
Vinnie Falco 8962588cec Fix a spurious gcc warning 2018-11-03 18:43:21 -07:00
Vinnie Falco 335f5c2333 Add detail::dynamic_buffer_prepare:
This function acts as a bottleneck for handling
exceptions thrown by dynamic buffers.
2018-11-01 21:10:54 -07:00
Vinnie Falco 30ca9c59d3 Fix uninitialized comparison in buffers iterator
fix #1263
2018-11-01 21:10:54 -07:00
Domen Vrankar 806979e37b Add BOOST_BEAST_USE_STD_STRING_VIEW:
fix #1133, fix #1241

When the macro BOOST_BEAST_USE_STD_STRING_VIEW is defined,
Beast will use std::string_view instead of boost::string_view.

The name boost::beast::string_view is a type alias for the
chosen view type.
2018-10-07 10:38:36 -07:00
luz.paz f3212eba48 Fix some typos:
fix #1255

Found via `codespell -q 3 -L uint,te,tim --skip="./test/extern/zlib*,./example/http/client/crawl*"`
2018-10-07 10:35:12 -07:00
Glen Fernandes 5e98c78951 Use boost::empty_value
fix #1233
2018-09-23 10:12:08 -07:00
Vinnie Falco 3f6190e015 Add missing includes 2018-09-18 09:10:42 -07:00
Glen Fernandes 8ed039200d Use the exchange() idiom in move constructors
fix #1203
2018-07-23 09:19:16 -07:00
Vinnie Falco 92d34b9e3b Use static_cast instead
fix #1163
2018-07-15 09:11:15 -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 39b014263a buffers_adapter improvements:
* Add value()
* Add value_type
* Add in-place constructor
2018-06-09 21:10:25 -07:00
Vinnie Falco 2c5ed4595a Fix buffers_prefix iterator decrement 2018-06-09 13:01:30 -07:00
Vinnie Falco bd3079f5b4 Fix buffers_adapter max_size 2018-06-09 13:01:30 -07:00
Vinnie Falco da9bb07d12 Fix buffers_adapter iterator value type 2018-06-08 14:01:17 -07:00
Vinnie Falco f948c9cbe5 Fix move-only arguments in bind_handler 2018-05-27 19:05:43 -07:00
Vinnie Falco 0afb380f50 Fix unused variable warning
fix #1119
2018-05-18 17:25:56 -07:00
Damian Jarek 86555b90ae Add handler_ptr::has_value
This function returns `true` if the container holds a managed object.

Resolves: #1079

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-05-18 17:25:56 -07:00
Vinnie Falco dcfd07f6f2 Use fully qualified namespace in BOOST_BEAST_HANDLER_INIT 2018-04-28 11:14:39 -07:00
Vinnie Falco c592782a1b Simplify some type trait expressions
fix #466
2018-04-26 17:30:46 -07:00
Vinnie Falco c5d4f8eede Use boost::void_t
fix #905
2018-04-24 15:14:37 -07:00
Vinnie Falco 14392d7f52 Use buffers_to_string in tests
fix #782
2018-04-24 10:55:39 -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
Vinnie Falco 12cc10f8bb Revert "Tidy up calls to post()"
This reverts commit 5eaa2be85e.
2018-03-22 20:13:39 -07:00