Commit Graph

1309 Commits

Author SHA1 Message Date
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
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
5b8eb1d87d Fix http::parser constructor javadoc 2018-05-28 11:23:37 -07:00
Vinnie Falco
f948c9cbe5 Fix move-only arguments in bind_handler 2018-05-27 19:05:43 -07:00
Benjamin Buch
3d7f1e7303 Tidy up websocket stream javadocs:
Make clear text()/binary() option is different from got_text()/got_binary().
2018-05-19 07:54:27 -07:00
Vinnie Falco
0afb380f50 Fix unused variable warning
fix #1119
2018-05-18 17:25:56 -07:00
Vinnie Falco
6ea66fd89e Remove spurious assert
fix #1099
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
Arvid Norberg
478c19e863 Use the root certificate which matches the fingerprint:
fix #1121

https://www.geotrust.com/resources/root_certificates/certificates/GeoTrust_Global_CA.pem
2018-05-08 14:08:28 -07:00
Vinnie Falco
24bbda7b0d Add const and non-const overloads for message based http writes:
fix #1113

This solves a problem where the message-oriented synchronous
HTTP write algorithms do not support messages whose body
writer requires a non-const reference to the message in
order to construct.

In addition, the message-oriented async_write algorithm is
modified to support messages passed by const reference when
possible, based on the body writer attributes.
2018-05-06 19:57:25 -07:00
Vinnie Falco
07aead170a Add is_mutable_body_writer metafunction 2018-05-04 19:34:05 -07:00
Vinnie Falco
416f84bc63 Remove deprecated Body reader and writer ctor signatures 2018-05-04 12:47:27 -07:00
Vinnie Falco
73bc28aaa2 Remove deprecated serializer::reader_impl() 2018-05-03 19:42:36 -07:00
Vinnie Falco
f48b978044 Use a shared string for example HTTP server doc roots
fix #1109
2018-05-03 14:18:33 -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
59f01a158b Add test::error 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
90c01e82ca Use flat_stream in ssl_stream example code 2018-04-30 19:49:43 -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
dcfd07f6f2 Use fully qualified namespace in BOOST_BEAST_HANDLER_INIT 2018-04-28 11:14:39 -07:00
Vinnie Falco
42ac536f9b Refactor HTTP write_op implementation
fix #764
2018-04-25 14:07:19 -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
f1b1ee2345 Fix race in advanced server examples
fix #1073
2018-04-12 08:54:44 -07:00
Vinnie Falco
3c3f4fc52b Revert "Tidy up a warning"
This reverts commit 90d2df3be3.
2018-04-10 09:09:49 -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
Vinnie Falco
4b0c14fe5a Use boost::is_convertible as a workaround 2018-03-13 10:47:07 -07:00
Vinnie Falco
90d2df3be3 Tidy up a warning 2018-03-11 14:22:50 -07:00
Daniel James
dabc1c8ae6 Fix BOOST_NO_CXX11_ALLOCATOR check 2018-03-11 14:22:31 -07:00
Vinnie Falco
6a34afb38a
Set version to 164 2018-03-09 09:29:18 -08:00
Vinnie Falco
c984f6c94d Fix masking on continuation frames 2018-03-09 07:51:33 -08:00
Daniela Engert
a7b78ac1bc fix narrowing warnings
Signed-off-by: Daniela Engert <dani@ngrt.de>
2018-03-04 15:13:32 -08:00
Vinnie Falco
5eaa2be85e Tidy up calls to post() 2018-03-04 13:19:17 -08:00
Vinnie Falco
ebd036a300 Improve websocket::stream::control_callback javadoc
fix #1053
2018-03-01 11:32:58 -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
073b53e448 Fix handler parameter javadocs 2018-02-28 15:04:54 -08:00
Vinnie Falco
dfc5a2ff67 Add move-only handler tests 2018-02-28 15:04:54 -08:00
Christos Stratopoulos
5a53bd449a Don't copy the handler in write_some_op 2018-02-28 13:20:56 -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
8dcc6162c1 Tidy up end_of_stream javadoc
fix #1023
2018-02-21 08:45:08 -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
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
a4eb96fcb9 Don't use typeid 2018-02-19 18:36:30 -08:00
Vinnie Falco
534ba34e7e Tidy up bind_handler doc 2018-02-16 10:51:28 -08:00
Benjamin Roland Buch
b7750de15f Fix fallthrough warnings
fix #1019
2018-02-16 10:51:28 -08:00
Vinnie Falco
ab32400d00 Fix soft-mutex assert in websocket stream:
Fix #1000

This resolves the assert 'ws_.wr_block_ == tok_'.
2018-02-16 10:51:28 -08:00
Benjamin Roland Buch
9f3c981d6a Fix memory leak in advanced server examples 2018-02-14 21:24:59 -08:00
Vinnie Falco
c9bbf7bdbc bind_handler works with boost placeholders 2018-01-26 10:12:40 -08:00
Vinnie Falco
2f03cc7895 Tidy up bind_handler doc
fix #985
2018-01-26 10:12:15 -08:00
Vinnie Falco
d855bdefd8 Type check completion handlers
fix #988
2018-01-26 08:58:19 -08:00
Vinnie Falco
38e580e49d Add Bishop Fox interview media 2018-01-25 06:02:43 -08:00
Vinnie Falco
72cf7db931 Fix use-after-move in example request handlers
fix #992
2018-01-25 06:02:43 -08:00
Peter Jankuliak
4fb535ece6 Fix iterator version of basic_fields::erase
fix #994
2018-01-25 06:02:43 -08:00
Vinnie Falco
ad42096a9d Avoid string_view::clear:
String views are cleared using assignment from
braced initializion, to avoid calling clear().
2018-01-25 06:02:42 -08:00
Vinnie Falco
2b32de6cba Update README.md for branches
fix #974
2018-01-25 06:02:42 -08:00
Paul "TBBle" Hampson
0efc246466 Use boost::winapi::GetLastError() consistently:
This replaces a few direct calls to ::GetLastError, and also removes a
couple of duplicate calls when the value was already held locally.
2018-01-12 12:30:39 -08:00
Paul "TBBle" Hampson
035248cefb Use make_error_code for setting an error_code from errc:
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.
2018-01-12 12:30:39 -08:00
Vinnie Falco
3546eff033 Remove BOOST_VERSION checks
fix #722
2018-01-12 12:30:39 -08:00
Vinnie Falco
24358f784a Disable gdb on Travis for Meltdown 2018-01-12 11:54:29 -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
08a9ed4c25 Add WebSocket error conditions:
This introduces the condition enumeration type for grouping
websocket error codes together as a convenience to callers.
2018-01-01 13:38:55 -08:00
Vinnie Falco
b86169019e Refactor error headers:
The WebSocket error header file declarations are
reorganized to make it easier to move function
definitions into their own translation unit.
2018-01-01 12:17:02 -08:00
Vinnie Falco
45798e0a6e Refactor detect_ssl_op:
fix #955

The asynchronous SSL detector uses a stackless coroutine.
2017-12-31 10:50:26 -08:00
Vinnie Falco
d7664fa140 Redistribute the read tests in the translation units 2017-12-31 10:28:42 -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
65d92f62fb Fix high-ASCII in source file 2017-12-30 09:20:28 -08:00
Vinnie Falco
8c5440aae1 Depend on container_hash 2017-12-30 07:11:25 -08:00
Vinnie Falco
cccb6a07fc http::parser is not MoveConstructible (API Change) 2017-12-30 06:08:28 -08:00
Vinnie Falco
b6c3cb30ae Remove unnecessary include 2017-12-29 09:26:29 -08:00
Vinnie Falco
5dcef24ea7 Add stream_fwd.hpp 2017-12-29 09:25:18 -08:00
Vinnie Falco
eddadacba7 Control callback is invoked on the execution context:
fix #954

Fix a defect where the control callback could execute
on the same stack as the initiating function.
2017-12-27 18:17:09 -08:00
Vinnie Falco
dabb78afe7 Sanitizer failures are errors 2017-12-23 08:46:34 -08:00
Vinnie Falco
4a4d535d98 Documentation 2017-12-15 09:27:40 -08:00
Vinnie Falco
d796319476 serializer::reader_impl is deprecated:
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
2017-12-14 13:13:10 -08:00
Damian Jarek
96e04022c4 handler_ptr tests:
fix #932

Ensure handler_ptr cleans up when move-constructing
a handler throws an exception.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2017-12-11 10:45:03 -08:00
Damian Jarek
aac2bf1596 Fix Travis memory utilization:
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>
2017-12-09 12:53:28 -08:00
Damian Jarek
285965d82e handler_ptr gives the strong exception guarantee (API Change):
* 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.
2017-12-08 10:58:46 -08:00
Damian Jarek
e08132106e handler_ptr is move-only:
It is no longer a reference counted object and now has semantics
close to a std::unique_ptr.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2017-12-04 13:07:17 -08:00
Damian Jarek
200e898f7e Don't copy completion handlers:
All asynchronous operations will now be able to use move-only
CompletionHandlers.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2017-12-04 12:14:40 -08:00
Vinnie Falco
3361df142c pausation always allocates 2017-12-04 12:14:39 -08:00
Vinnie Falco
eb0cc97e1a Protect calls from macros
fix #918
2017-12-04 12:14:11 -08:00
Vinnie Falco
eb412ee958 Fix CMakeLists.txt variable 2017-12-04 12:14:11 -08:00
Vinnie Falco
c01224ddc4 Tidy up ssl_stream special members
fix #916
2017-12-04 12:14:11 -08:00
Vinnie Falco
13b9d1bd92 built-in r-value return values can't be assigned:
This fixes the following warning:

  warning: ‘const’ type qualifier on return type has no effect [-Wignored-qualifiers]
2017-12-04 12:14:09 -08:00
Vinnie Falco
8a2a4578b6 Merge v144-hf1 2017-12-04 12:09:24 -08:00
Vinnie Falco
4053c1bb09 Handle invalid deflate frames:
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.
2017-12-04 12:05:36 -08:00
Vinnie Falco
1b86bc3c36 Update reports for hybrid assessment 2017-12-04 12:05:27 -08:00
Vinnie Falco
e2b473753b Install codecov on codecov CI targets only 2017-12-04 12:04:55 -08:00
Vinnie Falco
0d8b79abb5 Install codecov on codecov CI targets only 2017-12-03 12:49:51 -08:00
Vinnie Falco
2f451badc8 Handle invalid deflate frames:
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.
2017-12-03 01:13:41 -08:00
Vinnie Falco
1069b4ab22 Update reports for hybrid assessment 2017-12-03 01:13:23 -08:00
Damian Jarek
190d20e3a8 Tidy up basic_fields exception specifiers
fix #894

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2017-11-28 04:51:18 -08:00
Vinnie Falco
7ac24d77be Send idle pings in advanced servers:
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.
2017-11-27 16:44:59 -08:00
Vinnie Falco
8181851719 control callback is copied or moved:
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.
2017-11-27 15:05:58 -08:00
Vinnie Falco
ab91844039 Use iterator wrapper in detail::buffers_range
fix #907
2017-11-26 14:18:21 -08:00
Vinnie Falco
8c73c0d300 Don't use boost::string_ref 2017-11-26 14:01:49 -08:00
Vinnie Falco
b59d0a5cd5 Use variant in buffers_cat_view 2017-11-26 12:18:53 -08:00
Damian Jarek
332c2fe0cb Add detail::aligned_union and tidy up
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2017-11-26 12:18:53 -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
59107701d2 Remove unintended public members of handler_ptr 2017-11-21 15:03:47 -08:00
Vinnie Falco
639266fd64 Faster ascii_tolower 2017-11-21 15:03:43 -08:00
zerotypos-found
99bf3f5556 Fix some typos 2017-11-21 08:11:20 -08:00
Vinnie Falco
25c5f2e844 basic_fields does not support fancy pointers
fix #896
2017-11-20 12:12:06 -08:00
Vinnie Falco
d203bf342b Version 124 works with Boost 1.65.1 and earlier
fix #874
2017-11-20 11:52:03 -08:00
Vinnie Falco
110a0d52e2 null_buffers is deprecated 2017-11-20 11:48:57 -08:00
Vinnie Falco
75fcea69ee Refactor HTTP async read composed operations
fix #810
2017-11-18 19:47:35 -08:00
Vinnie Falco
5ae15432b8 Refactor basic_fields allocator internals:
fix #857

* Use empty base optimization to store the allocator

* Rebind to a smaller aligned type to reduce waste
2017-11-18 18:14:15 -08:00
Vinnie Falco
a55e67b94f Rename some detail functions 2017-11-18 18:14:14 -08:00
Vinnie Falco
73eba08cf4 Fix websocket permessage-deflate negotiation 2017-11-18 18:06:56 -08:00
Vinnie Falco
a4a2ee8806 Fix autobahn report link 2017-11-13 12:18:30 -08:00
Vinnie Falco
c37ce4b15e Fix name typo in http write test 2017-11-11 09:41:06 -08:00
Vinnie Falco
afca4cc277 Warn about upcoming API changes to certain concepts 2017-11-11 09:13:05 -08:00
Vinnie Falco
99d6d35c62 Tidy up some documentation
fix #880, fix #881
2017-11-10 16:41:14 -08:00
Vinnie Falco
ff2dc67afa Some basic_fields special members are protected 2017-11-08 20:13:09 -08:00
Damian Jarek
0f7670b7e0 Tidy up basic_parser:
- Add const qualifiers.
- Fix parser conversion constructor not copying header_limit_ and status_ fields.
- Use default special member functions when possible.
- Zero-initialize non-class members.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2017-11-08 20:13:09 -08:00
Casey Bodley
f96785df4f Fix signature for async_read_some, and tests
Signed-off-by: Casey Bodley <cbodley@redhat.com>
2017-11-08 19:58:46 -08:00
Miguel Portilla
a1db3cab9f Fix UTF8_checker test failures 2017-11-08 19:58:45 -08:00
Vinnie Falco
2ed1d9affb Fix some integer warnings in 64-bit builds 2017-11-07 07:10:31 -08:00
Sergey M․
8e75ed26d1 Revisit boost library min/max guidance
refs #170
2017-11-05 13:03:09 -08:00
Vinnie Falco
120617f438 Tidy up some documentation 2017-11-05 09:29:33 -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
Vinnie Falco
d9d2b23b57 ConstBufferSequence mandates pointer equivalence
fix #865
2017-11-03 19:34:30 -07:00
Vinnie Falco
14926bfb3f
Tidy up message doc image 2017-11-02 15:52:57 -07:00
Vinnie Falco
12a355efc9 Fix typo in example server help text 2017-11-01 11:31:03 -07:00
Vinnie Falco
5a35a33905 Add static_buffer_base default constructor definition
fix #862
2017-11-01 10:39:01 -07:00
Vinnie Falco
5177d729a7 Remove const&& overload of message::body 2017-10-31 14:43:10 -07:00
Vinnie Falco
895c9fa7ed BodyReader and BodyWriter names are swapped (API Change):
Body::reader and Body::writer meanings are reversed, for
consistency with the names of the stream operations:

* Body::reader is used for read, read_some, async_read, async_read_some
* Body::writer is used for write, write_some, async_write, async_write_some

Actions Required:

* Swap the reader and writer names for user defined Body types
* Swap use of is_body_reader and is_body_writer
2017-10-30 18:13:40 -07:00
Vinnie Falco
101023553e Fields::writer replaces Fields::reader (API Change):
* Fields::writer replaces Fields::reader
* The FieldsWriter concept is renamed from FieldsReader

Actions Required:

* Rename reader to writer for user defined Fields
2017-10-30 17:53:59 -07:00
Vinnie Falco
14653be0cc Tidy up FieldsReader doc 2017-10-30 15:59:05 -07:00
Vinnie Falco
23bf8638ab Add ref-qualified overloads for message::body 2017-10-30 15:23:43 -07:00
Vinnie Falco
e39e4c73bf Rename Cmake variables for clarity 2017-10-30 12:35:56 -07:00
Vinnie Falco
42679ee0bc Tidy up project folders in CMakeLists.txt 2017-10-30 12:35:55 -07:00
Vinnie Falco
b75d4e5e14 Set SNI hostname in example SSL clients
fix #853
2017-10-29 14:58:57 -07:00
Vinnie Falco
c5a1615301 basic_fields returns const values 2017-10-29 06:45:33 -07:00
Vinnie Falco
d8a0200929 Remove cxx11_sfinae_expr build requirement from tests 2017-10-27 17:03:44 -07:00
Vinnie Falco
970daa340a Tidy up fallthrough warning 2017-10-27 17:03:44 -07:00
Vinnie Falco
597802c38a Fix prepare_payload: chunked is HTTP/1.1 2017-10-27 11:16:10 -07:00
Vinnie Falco
b5389ba5f2 Documentation tidying
fix #836
2017-10-27 11:16:09 -07:00
Vinnie Falco
c3367e0746 Add autobahn test report to doc 2017-10-26 11:08:24 -07:00
Vinnie Falco
55185b8de9 Add explicit-failures-markup.xml 2017-10-26 08:13:41 -07:00
Vinnie Falco
2746184850 Tidy up fast websocket server host names 2017-10-26 05:52:56 -07:00
Vinnie Falco
c029efaf7c Temporarily disable utf8 validation tests 2017-10-26 00:00:35 -07:00
Vinnie Falco
85f2dcca33 Fix utf8 validation for autobahn 2017-10-25 23:24:31 -07:00
Vinnie Falco
3d3bc87042 Use synchronous writes in chunk output example 2017-10-25 23:24:31 -07:00
Vinnie Falco
2555942010 Use message::need_eof in example servers 2017-10-25 18:48:19 -07:00
Vinnie Falco
1754d5427d Add message::need_eof 2017-10-25 18:41:04 -07:00
Vinnie Falco
5c14ab9f7c Rename some basic_parser observers (API Change):
Some `basic_parser` member functions are renamed:

* chunked() was is_chunked()
* upgrade() was is_upgrade()
* keep_alive() was is_keep_alive()

Actions Required:

* Rename member function invocations at call sites
2017-10-25 18:04:54 -07:00
Vinnie Falco
6225c5bd2f Add has_content_length_impl to Fields (API Change):
* The function has_content_length_impl is added to the
  requirements of Fields.

Actions Required:

* Implement has_content_length_impl for user-defined Fields
2017-10-25 17:58:45 -07:00
Vinnie Falco
feb525f829 Remove serializer::chunked (API Change):
* The function serializer::chunked is removed,
  since it is redundant.

Actions Required:

* Call serializer::get::chunked instead of serializer::chunked
2017-10-25 17:09:04 -07:00
Vinnie Falco
129c7d8b78 Remove serializer::keep_alive (API Change):
* The serializer::keep_alive function is removed

Actions Required:

* Call message::keep_alive instead of serializer::keep_alive
2017-10-25 17:09:03 -07:00
Vinnie Falco
93c849d6d4 Update doc links 2017-10-25 17:08:48 -07:00
Vinnie Falco
4927fa42d7 More Jamfile compiler requirements for tests 2017-10-25 11:45:40 -07:00
Sorin Fetche
f4facffae3 Version command line option for HTTP client examples:
The examples HTTP clients allow an optional command line switch
to choose the HTTP-version used ("1.0" or "1.1").
2017-10-25 10:33:24 -07:00
Berkus Decker
bea7d6e019 Add BOOST_BEAST_NO_POSIX_FADVISE 2017-10-25 10:17:25 -07:00
Vinnie Falco
6ccc61d940 Fix buffered_read_stream async_read_some signature 2017-10-24 14:26:05 -07:00
Andrey Semashev
ab2a225a9a Update Boost.WinAPI usage to the new location and namespace. 2017-10-24 13:32:50 -07:00
Peter Dimov
645fdb6581 Add Travis tests with the default compilers 2017-10-24 09:33:30 -07:00
Vinnie Falco
41e61a7458 Fix executor type compilation 2017-10-24 09:33:29 -07:00
Vinnie Falco
e94dcae10c Fix shadowing in session_alloc 2017-10-24 09:33:29 -07:00
Vinnie Falco
c4bef9cc29 Fix doc typo 2017-10-23 20:19:53 -07:00
Vinnie Falco
e146f2c7be Don't return end_of_stream on win32 file body writes 2017-10-23 20:19:51 -07:00
Vinnie Falco
8312c6eb86 Tidy up unused variable warnings 2017-10-23 20:19:36 -07:00
Vinnie Falco
1faac0b0fb Update stream write documentation for end of stream changes 2017-10-23 18:36:01 -07:00
Vinnie Falco
4337804f5d Update README.md 2017-10-23 18:03:29 -07:00
Vinnie Falco
42095dcb34 Add CppCon2017 presentation link 2017-10-23 17:54:33 -07:00
Vinnie Falco
3a28e999af Update for Net-TS Asio (API Change):
fix #769

The following classes are removed:

* handler_type
* async_result
* async_completion
* is_dynamic_buffer
* is_const_buffer_sequence
* is_mutable_buffer_sequence
* handler_alloc

Actions Required:

* Use BOOST_ASIO_HANDLER_TYPE instead of handler_type
* Use BOOST_ASIO_INITFN_RESULT_TYPE instead of async_result
* Use boost::asio::async_completion
* Use boost::asio::is_dynamic_buffer
* Use boost::asio::is_const_buffer_sequence
* Use boost::asio::is_mutable_buffer_sequence
* boost::asio::associated_allocator_t replaces handler_alloc
2017-10-23 17:11:27 -07:00
Vinnie Falco
5c6b232654 Fix basic_fields javadoc 2017-10-22 10:03:40 -07:00
Vinnie Falco
56fee93601 Fix for a test matrix compiler 2017-10-22 07:03:14 -07:00
Vinnie Falco
d0d4e0a740 http write returns success on connection close (API Change):
fix #767

The write family of HTTP stream algorithms no longer returns
error::end_of_stream when the message indicates that the connection
should be closed.

Actions Required:

* Add code to servers to close the connection after successfully
  writing a message where `message::keep_alive()` would return `false`.
2017-10-22 07:03:04 -07:00
Vinnie Falco
2399b610e3 Clear previous message fields in parser
fix #818
2017-10-16 12:09:41 -07:00
Vinnie Falco
e832baf93f Check compiler feature in Jamfile 2017-10-16 09:16:26 -07:00
Vinnie Falco
a30d30e379 Fix spurious race in websocket close test 2017-10-15 10:41:16 -07:00
Vinnie Falco
1e412715b1 Use unit-test subtree 2017-10-15 09:00:07 -07:00
Vinnie Falco
6ca2ef8449 Add missing case in error test 2017-10-10 08:17:23 -07:00
Vinnie Falco
8179be560e config.hpp is not a public header 2017-10-10 07:49:12 -07:00
Vinnie Falco
7594c88f8f CMake 3.5.1 is required 2017-10-09 14:35:56 -07:00
Vinnie Falco
2ac6936312 Fix zlib symbol conflicts
fix #808
2017-10-07 13:59:04 -07:00
Vinnie Falco
a517df9090 assert on empty buffer in websocket read 2017-10-07 11:17:13 -07:00
Vinnie Falco
6e08fa0a21 Add test for issue 807 2017-10-05 19:24:35 -07:00
Gyorgy Szekely
471638c60e Fix enum and non-enum in conditional exp. warning 2017-10-03 06:13:11 -07:00
Vinnie Falco
f5f1b7d6fa Add test for issue 802 2017-10-03 06:13:10 -07:00
Vinnie Falco
c0cf030528 OpenSSL targets are optional (CMake) 2017-10-01 10:34:17 -07:00
Vinnie Falco
bbc1f14347 Fix spurious strand_ in advanced_server_flex 2017-10-01 10:14:47 -07:00
Vinnie Falco
167f9641a4 Tidy up doc badge links 2017-09-30 07:25:33 -07:00
Vinnie Falco
ac6c23dd6b Doc root is at index.html
fix #795
2017-09-26 10:03:46 -07:00
Vinnie Falco
04bf98298f Update build instructions
fix #796
2017-09-26 10:03:46 -07:00
Peter Jankuliak
fa4df7eb60 Remove unused strands in server examples 2017-09-25 21:33:04 -07:00
Nils Gladitz
c81558e38b file_win32 opens for read-only in shared mode:
fix #786

Without this change the second opening of an
already opened file fails with:

  "The process cannot access the file because it
  is being used by another process"
2017-09-25 21:33:04 -07:00
Peter Jankuliak
5a7b8b23db
Fix writing headers into std::ostream 2017-09-21 16:08:19 -07:00
Vinnie Falco
b5f22bdef6 Add buffers_to_string
fix #772
2017-09-20 08:31:36 -07:00
Vinnie Falco
2c656a22f9 Remove buffers_suffix::get (API Change):
* buffers_suffix::get member function is removed

Actions Required:

* Avoid calling buffers_suffix::get
2017-09-20 08:31:36 -07:00
Vinnie Falco
06fb2b9dfc buffers_cat replaces buffer_cat (API Change):
fix #773

* buffer_cat is renamed to buffers_cat
* buffer_cat_view is renamed to buffers_cat_view

Actions Required:

* Use buffers_cat instead of buffer_cat
* Use buffers_cat_view instead of buffer_cat_view
2017-09-15 12:52:59 -07:00
Vinnie Falco
38c2816539 buffers_front replaces buffer_front (API Change):
fix #773

* buffer_front is renamed to buffer_front

Actions Required:

* Use buffers_front instead of buffer_front
2017-09-15 12:52:59 -07:00
Vinnie Falco
e94a65b04a buffers_prefix replaces buffer_prefix (API Change)
fix #773

* buffer_prefix is renamed to buffers_prefix
* buffer_prefix_view is renamed to buffers_prefix_view

Actions Required:

* Use buffers_prefix instead of buffer_prefix
* Use buffers_prefix_view instead of buffer_prefix_view
2017-09-15 12:52:58 -07:00
Vinnie Falco
795da80859 buffers_suffix replaces consuming_buffers (API Change):
fix #770

* consuming_buffers is renamed to buffers_suffix

Actions Required:

* Use buffers_suffix instead of consuming_buffers
2017-09-15 12:52:45 -07:00
Vinnie Falco
38e28966ea message::version is a member function (API Change):
fix #778

* The version data member is replaced with accessor
  member functions.

Actions Required:

* Call member function message::version instead of accessing
  the version member at call sites.
2017-09-12 17:13:02 -07:00
Vinnie Falco
54fe7cacf7 message::body is a member function (API Change):
fix #778

* The body data member is replaced with accessor
  member functions.

Actions Required:

* Call member function message::body instead of accessing
  the data member at call sites.
2017-09-12 17:12:12 -07:00
Vinnie Falco
1de06dfaeb Update README.md master doc link 2017-09-10 16:10:47 -07:00
Vinnie Falco
60a33019d4
Set version to 114 2017-09-10 14:35:52 -07:00
Howard Hinnant
4880cdd472 Remove field_range copy constructor
*  This presence of the user-declared copy constructor makes
   the compiler-provided copy assignment operator deprecated.
   This change allows the compiler to provide both copy members
   without deprecated behavior.
2017-09-09 06:49:39 -07:00
Vinnie Falco
0007afdaf2 Fix handler signature in async_read_header 2017-09-09 06:39:49 -07:00
Vinnie Falco
49d9d47a0b HTTP reads and writes return bytes transferred (API Change):
* HTTP read and write operations now return the
  number of bytes transferred to or from the stream.

Actions Required:

* Modify HTTP read and/or write completion handlers to receive
  the extra std::size_t bytes_transferred parameter.
2017-09-03 20:37:28 -07:00
Vinnie Falco
cc8246e27e Update websocket notes 2017-09-03 20:05:20 -07:00
Vinnie Falco
c0e5f14702 WebSocket writes return the bytes transferred (API Change):
* Stream write operations now return the number of bytes
transferred from the caller's input buffers.

Actions Required:

* Modify websocket write completion handlers to receive
  the extra std::size_t bytes_transferred parameter.
2017-09-03 20:05:19 -07:00
Vinnie Falco
647b3d68e1 Suspended ops special members 2017-08-31 17:52:37 -07:00
Vinnie Falco
51a5a36118 Refactor stream operations and tests plus coverage 2017-08-31 17:52:36 -07:00
Vinnie Falco
9f089c2a33 Fix utf8 check split code point at buffer end 2017-08-31 17:52:36 -07:00
Vinnie Falco
b13e02bb55 Fix invalid iterator in test reporter
fix #755
2017-08-29 08:22:12 -07:00
Damian Jarek
96c53a048f Add Add test::stream::lowest_layer:
This allows the stream to be used as the next layer type in
a stack of network stream layers.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2017-08-28 22:16:23 -07:00
Vinnie Falco
30b98674d5 Refactor websocket stream: fixes and tests 2017-08-28 22:16:22 -07:00
Vinnie Falco
1d5b3f488e Refactor websocket stream members 2017-08-26 20:12:21 -07:00
Vinnie Falco
4c335a64cf Refactor stream open state variable 2017-08-26 20:12:04 -07:00
Vinnie Falco
df7b068fa7 websocket read tests 2017-08-25 07:40:05 -07:00
Vinnie Falco
142b785119 split up websocket tests 2017-08-24 06:38:47 -07:00
Vinnie Falco
5ac51a1054 websocket write tests 2017-08-23 14:38:29 -07:00
Vinnie Falco
2697c26238 Fix websocket close_op resume state 2017-08-23 14:34:14 -07:00
Vinnie Falco
463accffd1 Refactor test::stream 2017-08-23 14:34:13 -07:00
Vinnie Falco
99822aebf5 websocket ping tests 2017-08-23 14:34:13 -07:00
Vinnie Falco
6809c18afa websocket handshake uses coroutine 2017-08-23 14:34:13 -07:00
Vinnie Falco
96eff81cea websocket close fixes and tests 2017-08-23 14:34:13 -07:00
Vinnie Falco
7e815435f6 websocket accept refactoring (API Change):
* stream overloads of accept which take both a message
  and a buffer sequence are removed.

Actions Required:

* Do not call websocket accept overloads which take
  both a message and a buffer sequence, as it is
  illegal per rfc6455.
2017-08-23 14:34:13 -07:00
Vinnie Falco
7a96dc4e11 Fix async_read_some handler signature 2017-08-23 14:34:13 -07:00
Vinnie Falco
59d4b85e15 Don't use async_write_msg in examples
fix #746
2017-08-18 07:55:30 -07:00
Vinnie Falco
830e651f99 Fix argument parsing in HTTP examples
fix #746
2017-08-18 07:55:20 -07:00
Vinnie Falco
2c73eeef7c Use test::stream 2017-08-16 18:26:48 -07:00
Vinnie Falco
e690528132 Rename frame and header buffer types
fix #736
2017-08-15 16:59:17 -07:00
Vinnie Falco
3d6a009a96 Fix utf8 check for compressed frames 2017-08-15 16:33:25 -07:00
Vinnie Falco
a435dde2a3 Fix done state for WebSocket reads 2017-08-15 12:49:02 -07:00
Vinnie Falco
76feb4afd4 Fix for basic_parser::skip(true) and docs
fix #742
2017-08-15 07:00:56 -07:00
Vinnie Falco
f570593a01 Tidy up utf8_checker and tests 2017-08-14 15:41:35 -07:00
Vinnie Falco
66b657a85f Autobahn|Testsuite fixes 2017-08-14 15:41:31 -07:00
Vinnie Falco
5940002c96 Websocket close will automatically drain:
fix #642

This changes websocket::stream close and async_close to automatically
read and discard incoming message frames before shutting down the
connection. It is no longer necessary to manually drain the connection.
2017-08-14 15:41:11 -07:00
Vinnie Falco
fa087e19f1 Refactor read_op + fail_op 2017-08-14 15:40:13 -07:00
Vinnie Falco
3652137718 Refactor close_op 2017-08-14 15:30:31 -07:00
Vinnie Falco
470ef85982 Refactor read_op 2017-08-14 15:30:30 -07:00
Vinnie Falco
91fb1c4b53 Refactor fail_op 2017-08-14 15:30:30 -07:00
Vinnie Falco
a98e432a2a Refactor ping_op 2017-08-14 15:30:30 -07:00
Vinnie Falco
2b484c0b8b Refactor write_op 2017-08-14 15:30:30 -07:00
Vinnie Falco
0439114fd5 Remove obsolete write_op 2017-08-14 15:30:30 -07:00
Vinnie Falco
ffd20b91f7 websocket test improvements 2017-08-14 15:30:29 -07:00
Vinnie Falco
4218a3a972 Add flat_static_buffer::reset 2017-08-14 15:30:28 -07:00
Vinnie Falco
3fe6cef129 Dynamic buffer input areas are mutable 2017-08-14 15:30:13 -07:00
Vinnie Falco
a56b390638 Tidy up Jamfile and tests 2017-08-10 18:32:21 -07:00
Vinnie Falco
483a4c5da5 Fix compile error in websocket snippet 2017-08-10 16:28:20 -07:00
Vinnie Falco
6ef4afa765 Fix pausation::save 2017-08-09 18:50:04 -07:00
Vinnie Falco
9fd7e4adee tools/ renamed from build/ 2017-08-09 18:50:04 -07:00
Vinnie Falco
d8a1eef7a3 Tidy up some test warnings 2017-08-09 17:23:41 -07:00
Vinnie Falco
da8bc6594d Only set /permissive- on Appveyor 2017-08-09 17:18:07 -07:00
Vinnie Falco
d9d2b10760 Only set -std=c++11 on Travis 2017-08-09 16:34:19 -07:00
Vinnie Falco
8977237f8a Use #error in config.hpp 2017-08-09 16:34:18 -07:00
Vinnie Falco
17789ba02e Remove unused include 2017-08-09 14:43:21 -07:00
Vinnie Falco
d613feae01 Example HTTP server fixes 2017-08-08 19:25:35 -07:00
Vinnie Falco
0175102151 Tidy up allocator usage 2017-08-08 11:11:44 -07:00
Vinnie Falco
cf8182794a Boost test matrix fixes 2017-08-08 11:11:31 -07:00
Vinnie Falco
6f85f38836 Section headings in examples 2017-08-08 06:20:24 -07:00
Vinnie Falco
dd71b0f94d Refactor all examples:
fix #575, fix #604, fix #608, fix #634, fix #712

All examples are rewritten:

* Using Best Practices
* Mostly self-contained
* New examples to complete the feature matrix
* The server-framework example is removed
2017-08-07 20:53:11 -07:00
Vinnie Falco
5e6ee5445e websocket documentation 2017-08-04 19:02:13 -07:00
Vinnie Falco
60c8a560bf Add teardown_role for correct TIME_WAIT behavior (API Change):
* teardown_tag is replaced with teardown_role, a client/server
  flag used to determine whether the shutdown is performed
  before or after reading the EOF. This is in accordance with
  RFC6455 7.1.1:

  https://tools.ietf.org/html/rfc6455#section-7.1.1

Actions Required:

* Modify signatures of teardown and async_teardown to use
  teardown_role instead of teardown_tag

* Change calls to teardown and async_teardown to pass the
  correct role: client or server depending on context.
2017-08-04 19:02:13 -07:00
Vinnie Falco
de03a1a32d drain_buffer is removed (API Change):
* The drain_buffer dynamic buffer is no longer a public interface.

Actions Required:

* Replace code which uses drain_buffer. For websocket::stream,
  it is no longer necessary to manually drain the connection
  after closing.
2017-08-04 19:02:13 -07:00
Vinnie Falco
64327739f0 WebSocket close will automatically drain (API Change):
fix #642

* Calls to stream::close and stream::async_close will
  automatically perform the required read operations

Actions Required:

* Remove calling code which drains the connection after
  calling stream::close or stream::async_close
2017-08-04 19:02:13 -07:00
Vinnie Falco
dc6a08d10a Add variadic min/max 2017-08-04 19:02:13 -07:00
Vinnie Falco
028fda0237 Fix stream::read_size_hint calculation 2017-08-04 19:02:13 -07:00
Vinnie Falco
576edfaaed eof on accept returns error::closed 2017-08-04 19:02:13 -07:00
Vinnie Falco
56a9e6ba9a Call do_fail from read_some 2017-08-04 19:02:13 -07:00
Vinnie Falco
756de5d703 Refactor fail/clode code 2017-08-04 19:02:13 -07:00
Vinnie Falco
34c982b0e7 vcxproj workaround for include symlinks 2017-08-04 19:02:13 -07:00
Vinnie Falco
e9d01fe79f Remove obsolete frame tests 2017-08-04 19:02:12 -07:00
Vinnie Falco
387d68f336 Reorder define test macro params 2017-08-04 19:02:12 -07:00
Vinnie Falco
2567f49fb5 Rename test macros 2017-08-04 19:02:12 -07:00
Vinnie Falco
444ef321a5 Remove unused test header 2017-08-04 19:02:07 -07:00
Vinnie Falco
c495f946c9 Fix doc includes 2017-08-03 08:53:12 -07:00
Vinnie Falco
69c9ec5d9f Fix doc convenience includes 2017-08-03 07:47:49 -07:00
Nik Bougalis
db92ec9127 Fix doc typo 2017-08-03 04:22:08 -07:00
Vinnie Falco
e5e25f5c17 Use correct handler signature in fail_op
fix #716
2017-08-03 04:21:24 -07:00
Vinnie Falco
7e1ade4169 Log the value of LIB_DIR for doc builds (debug) 2017-08-01 12:41:36 -07:00
Miguel Portilla
ee04fa096b Trim utf8 checker test 2017-08-01 11:56:37 -07:00
Daniel James
66b07798e6 Use unique names for Jam projects 2017-08-01 11:31:50 -07:00
Vinnie Falco
0e5117e006 Fix bench-zlib cmake 2017-08-01 06:18:13 -07:00
Vinnie Falco
a7069f184e basic_fields::key_compare is noexcept
fix #704
2017-08-01 06:16:26 -07:00
Vinnie Falco
6be32a2b3d Update redirect 2017-07-31 19:47:02 -07:00
Vinnie Falco
7b364af6e0 Less compression on websocket test 2017-07-31 19:02:48 -07:00
Vinnie Falco
7b90ff852d Faster zlib tests 2017-07-31 19:02:48 -07:00
Vinnie Falco
b0d7bc2e86 Add bench-zlib 2017-07-31 19:02:47 -07:00
Vinnie Falco
0a5a48f8da Update boostorg links 2017-07-31 19:02:47 -07:00
Vinnie Falco
81c306ed13 Fix library.json 2017-07-31 19:02:47 -07:00
Vinnie Falco
3fb5d60db2 Rename wsload compile target 2017-07-31 19:02:46 -07:00
Vinnie Falco
00f237bbf6 Use valgrind property 2017-07-31 19:02:46 -07:00
Vinnie Falco
030f5eef87 Move extras/ to test/ 2017-07-31 19:02:46 -07:00
Vinnie Falco
df9ec6c7f3 Move bench/ to test/ 2017-07-31 19:02:46 -07:00
Vinnie Falco
8def3b1ba7 Add valgrind variant, fix false positives 2017-07-31 12:37:32 -07:00
Vinnie Falco
0a3029b8ac Fix html redirect 2017-07-31 09:07:21 -07:00
Vinnie Falco
c27fbf826d Tidy up static_buffer braced init 2017-07-31 09:07:21 -07:00
Vinnie Falco
6e3c63e685 Add test::stream 2017-07-31 09:07:21 -07:00
Vinnie Falco
ef8206041b close on test::pipe teardown 2017-07-31 09:07:20 -07:00
Vinnie Falco
cd2f2b56d0 Fix race in test::pipe 2017-07-31 09:07:20 -07:00
Vinnie Falco
009d4f38ab Tidy up Travis build scripts 2017-07-31 09:07:20 -07:00
Vinnie Falco
8fbb358354 Use off-site Quick Start link temporarily 2017-07-30 12:09:53 -07:00
Daniel James
d99d516c13 Unset BOOST_COROUTINES_NO_DEPRECATION_WARNING
fix #700
2017-07-29 17:06:20 -07:00
Vinnie Falco
79d36bb526 Use off-site doc link 2017-07-29 12:44:57 -07:00
Vinnie Falco
8bfa058daa Tidy up doc snippet paths 2017-07-29 12:44:41 -07:00
Vinnie Falco
ea35f6f770 Ignore Content-Length in some cases:
fix #692

The value of Content-Length is not checked for limits
when the semantics of an HTTP response indicate that
the message has no body. For example, when status is 101.
2017-07-29 12:44:28 -07:00
Vinnie Falco
c465ed5a69 Update repository links in source comments 2017-07-29 12:44:10 -07:00
Vinnie Falco
c57f9ba18e basic_fields::value_type is not copyable
fix #697
2017-07-29 03:51:22 -07:00
Vinnie Falco
b5d9ce8a27 Fix typo in test/CMakeLists.txt 2017-07-29 03:39:34 -07:00
Vinnie Falco
809e822789 Refactor test build scripts 2017-07-29 00:26:05 -07:00
Vinnie Falco
61b2b63b57 Update doc copyrights 2017-07-29 00:25:00 -07:00
Vinnie Falco
8bf86bd2fa Build stand-alone doc 2017-07-29 00:25:00 -07:00
Vinnie Falco
b2d58d60f9 Fix doc title 2017-07-28 19:30:28 -07:00
Vinnie Falco
698884d8bb Move benchmarks to bench/ 2017-07-28 18:55:32 -07:00
Vinnie Falco
e15448a83a control frame callbacks are non-const references:
fix #653

Actions Required:

* Modify calls to set the control frame callback, to
  pass non-const reference instances, and manage the
  lifetime of the instance.
2017-07-28 17:07:25 -07:00
Vinnie Falco
629872b28f Update project metadata 2017-07-28 17:07:25 -07:00
Vinnie Falco
90cba35f38 Fix Appveyor script 2017-07-28 17:07:25 -07:00
Vinnie Falco
6ab9bd2780 Use fopen_s on Windows
fix #691
2017-07-28 17:07:25 -07:00
Vinnie Falco
0dc2c9d810 Rename wstest source file 2017-07-28 17:07:24 -07:00
Vinnie Falco
f02353b7f5 Use Asio array optimization in static_buffer_base
fix #689
2017-07-28 17:07:24 -07:00
Vinnie Falco
467547fd9c Set BOOST_ASIO_NO_DEPRECATED 2017-07-28 17:07:24 -07:00
Vinnie Falco
df73241a60 constexpr in derived buffers
fix #657
2017-07-28 17:07:24 -07:00
Vinnie Falco
18a698f7f6 Use read buffer instead of buffered stream 2017-07-28 17:07:24 -07:00
Vinnie Falco
70c1d361fd Refactor accept, handshake ops 2017-07-28 17:07:23 -07:00
Vinnie Falco
07535d6289 Optimize buffered_read_stream
fix #651
2017-07-28 17:07:23 -07:00
Vinnie Falco
fd1b236159 Tidy up MSVC CMakeLists.txt
fix #650
2017-07-28 17:07:23 -07:00
Vinnie Falco
e87bac242b Tidy up websocket javadocs 2017-07-28 17:07:23 -07:00
Vinnie Falco
c367309122 Tidy up namespace qualifiers 2017-07-28 17:07:23 -07:00
Vinnie Falco
ddd67ef30e source.dox is path-independent 2017-07-28 17:07:23 -07:00
Vinnie Falco
f2da16c9f6 Don't build pre-C++11 2017-07-28 17:07:22 -07:00
Vinnie Falco
ff95002fd9 Adjust redirect html 2017-07-28 17:07:22 -07:00
Vinnie Falco
c28a700a00 Output to integrated documentation 2017-07-28 16:27:08 -07:00
Vinnie Falco
0fb562a4d7 Fix typo in equal_range
fix #688
2017-07-27 21:18:04 -07:00
Vinnie Falco
cbb47a0ffd Fix websocket read of zero length message
fix #686
2017-07-27 19:09:15 -07:00
Vinnie Falco
0e79893d07 Fix CONTRIBUTING.md links 2017-07-27 10:14:06 -07:00
Vinnie Falco
a61578634b
Set version to 88 2017-07-26 18:45:22 -07:00
Vinnie Falco
ce82e6476d Fix uninitialized frame done 2017-07-26 18:45:06 -07:00
Vinnie Falco
a5917c9044 Don't use program_options 2017-07-26 15:18:25 -07:00
Vinnie Falco
59f7819cf6 Refactor tests Jamfile 2017-07-26 11:46:01 -07:00
Vinnie Falco
f4c2cd7ec6 Update doc links in README.md 2017-07-26 09:54:22 -07:00
Vinnie Falco
e1495e4fe2 Update README, add CONTRIBUTING.md and CODE_OF_CONDUCT.md 2017-07-25 17:47:01 -07:00
Vinnie Falco
3cba28f308 variant fixes and tests 2017-07-25 15:58:07 -07:00
Vinnie Falco
c831afd93b Rename to BEAST_EXPECT 2017-07-25 15:58:06 -07:00
Vinnie Falco
175763e773 Update appveyor for Boost branch 2017-07-25 15:58:06 -07:00
Vinnie Falco
e56d9955de websocket read returns the number of bytes inserted (API Change):
* read and async_read now return the number of bytes inserted
into the caller's buffer.

Actions Required:

* Change the signature of completion handlers used with
  websocket::stream::async_read to void(error_code, std::size_t)
2017-07-25 08:50:58 -07:00
Vinnie Falco
6e33072832 Add library metadata 2017-07-25 06:54:35 -07:00
Eliott Paris
73871cfb7f Fix Deferred Body Type Example inconsistencies
Fix issue #675
2017-07-25 06:49:48 -07:00
Peter Dimov
31d2718eac Use configured doxygen and xsltproc 2017-07-25 05:33:28 -07:00
Vinnie Falco
03ec8d4d4b Normalize doc build scripts 2017-07-25 05:33:27 -07:00
Vinnie Falco
f642eebf00 Tidy up Jamfile 2017-07-24 16:12:34 -07:00
Vinnie Falco
5d65f81e5f Remove spurious declaration 2017-07-24 14:47:31 -07:00
Vinnie Falco
8578f3cf76 Update copyrights 2017-07-24 09:42:51 -07:00
Vinnie Falco
982f4c3b70 Update documentation for boost 2017-07-24 09:41:27 -07:00
Vinnie Falco
198846d7bd Update CMakeLists.txt for boost 2017-07-23 20:04:07 -07:00
Vinnie Falco
ad8c5f9f7f Use winapi 2017-07-23 17:38:06 -07:00
Vinnie Falco
b80f9797f2 Add local-travis.sh 2017-07-23 17:36:47 -07:00
Vinnie Falco
a72839645d Update README.md 2017-07-23 17:36:31 -07:00
Vinnie Falco
7317bd0de9 Use custom variant 2017-07-23 17:36:12 -07:00
Vinnie Falco
b97586b318 Remove use of lexical_cast 2017-07-23 17:34:41 -07:00
Vinnie Falco
7139dd639a Boost prep 2017-07-23 17:34:13 -07:00
Vinnie Falco
e5a4dc6a96 Tidy up test warning 2017-07-22 20:09:24 -07:00
Sacha
c2ecb34404 Fix test failure 2017-07-22 20:09:21 -07:00
Vinnie Falco
cb501a07c8 WebSocket optimizations (API Change):
The websocket stream is optimized to contain a small
circular static buffer, reducing the number of I/O calls when
reading data. The size of the buffer is tuned for maximum
performance with TCP/IP and no long needs configuration:

* read_some replaces read_frame
* write_some replaces write_Frame
* async_read_some replaces async_read_frame
* async_write_some replaces async_write_frame

* websocket::stream::read_buffer_size is removed

Actions Required:

* Remove calls websocket::stream::read_buffer_size

* Use read_some and write_some instead of read_frame and write_frame
2017-07-20 08:15:32 -07:00
Vinnie Falco
8f3d5a094c Add consuming_buffers::get 2017-07-20 08:15:32 -07:00
Vinnie Falco
4eb926cd67 bind_handler allows placeholders 2017-07-20 08:15:32 -07:00
Vinnie Falco
5e4a5592f3 multi_buffer is type-check friendly 2017-07-20 08:15:32 -07:00
Vinnie Falco
ed7c095df9 static_buffer::consume improvement 2017-07-20 08:15:32 -07:00
Vinnie Falco
85cd2b125b Tidy up buffer_front 2017-07-20 08:15:32 -07:00
Adrian Imboden
871ebf1c1c Fix private timer::clock_type
fix #662
2017-07-20 08:15:32 -07:00
Vinnie Falco
60e133ab4c read_some, async_read_some return bytes used
fix #659
2017-07-20 08:15:32 -07:00
Vinnie Falco
04887c49e0 Documentation work 2017-07-20 08:15:32 -07:00
Vinnie Falco
4e44ddbd45 Add static_buffer (API Change):
* static_buffer is added

Note this is the same name from two versions ago, when
static_buffer was renamed to flat_static_buffer for
consistency and to clear the name for a circular static
buffer.

Actions Required:

* Callers who depend on static_buffer returning sequences of
  exactly length one should switch to flat_static_buffer.
2017-07-20 08:15:32 -07:00
Vinnie Falco
cb21b117bf Turn some flat_static_buffer_tests on 2017-07-20 08:15:32 -07:00
Vinnie Falco
2b89bbce41 Add wstest compression option 2017-07-20 08:15:32 -07:00
Vinnie Falco
47c07b0a59 Fix buffer lifetime in websocket write 2017-07-20 08:15:32 -07:00
Vinnie Falco
cee3bff060 Add buffer_front 2017-07-20 08:15:32 -07:00
Vinnie Falco
6fa9a97727 Add flat_static_buffer::mutable_data 2017-07-20 08:15:32 -07:00
Vinnie Falco
39358a2f93 Fix extraneous argument in async_write_header
fix #655
2017-07-20 08:15:32 -07:00
Vinnie Falco
d4eaa002a8 Silence spurious warning 2017-07-20 08:15:32 -07:00
Vinnie Falco
bd5ab6ffd0 Add wstest benchmark tool 2017-07-20 08:15:32 -07:00
Vinnie Falco
94e92e75b7 Rename to flat_static_buffer and flat_static_buffer_base (API Change):
Actions Required:

* Rename static_buffer to flat_static_buffer_base
* Rename static_buffer_n to flat_static_buffer
2017-07-20 08:15:31 -07:00
Vinnie Falco
1d7d7445d5 Add session_alloc to example/common 2017-07-20 08:15:31 -07:00
Vinnie Falco
8fa8ecb502 Use std::function and reference wrapper 2017-07-20 08:15:31 -07:00
Vinnie Falco
3c2d3181fc accept requires a message 2017-07-20 08:15:31 -07:00
Vinnie Falco
efd715e55c stream uses flat_buffer 2017-07-20 08:15:31 -07:00
Vinnie Falco
2dced4398e Add rd_close_ to websocket stream state 2017-07-20 08:15:31 -07:00
Vinnie Falco
4d15fc455a websocket::stream tidying 2017-07-20 08:15:31 -07:00
Robert Allan Hennigan Leahy
27d070c724 is_invocable works with move-only types:
fix #652

Previously reported that function objects
taking move only types by value were not invocable.
2017-07-20 08:15:31 -07:00
Vinnie Falco
2ea3240ed6 Documentation tidying 2017-07-20 08:15:31 -07:00
Vinnie Falco
4b71aa67e0 Refactor chunked parsing (API Change):
* parser now has a callback feature for intercepting chunk headers
  and chunk bodies

* The names for basic_parser derived class callbacks have been
  refactored

* basic_parser offers an additional callback for distinguishing
  chunk body data.

Actions Required:

* Adjust signatures for required members of user-defined
  subclasses of basic_parser

* Use the new basic_parser chunk callbacks for accessing
  chunk extensions and chunk bodies.
2017-07-20 08:15:31 -07:00
Vinnie Falco
cc73d883be File is not copy-constructible 2017-07-20 08:15:31 -07:00
Vinnie Falco
9ecd2a491e multi_buffer ctor is explicit 2017-07-20 08:15:31 -07:00
Nik Bougalis
696c4169fc Suppress incorrect GCC warning:
GCC will something generate an incorrect warning when compiling Beast
with the -Wmaybe-uninitialized flag.

For more details, see

http://www.boost.org/doc/libs/1_64_0/libs/optional/doc/html/boost_optional/tutorial/gotchas/false_positive_with__wmaybe_uninitialized.html
2017-07-20 08:15:31 -07:00
Vinnie Falco
78f3cd59a1 better is_final on empty_base_optimization 2017-07-20 08:15:31 -07:00
Vinnie Falco
b18d0d15b0 Pass string_view by value 2017-07-20 08:15:31 -07:00
Vinnie Falco
ff15cf8688 Refactor chunked-encoding serialization:
New buffer sequence classes are provided to allow full
control over the serialization of chunk-encoded message
payloads:

* chunk_header

    A ConstBufferSequence representing the chunk header.
    It includes a hexadecimal-encoded size, an optional
    set of chunk extensions, and the trailing CRLF
    required to denote the end of the chunk header.

    This allows the caller to manually serialize the chunk
    body in one or more calls to a stream output function.
    The caller must also output an object of type `chunk_crlf`
    to the stream to indicate the end of the chunk body.

* chunk_crlf

    A small ConstBufferSequence that simply represents
    the two character sequence "\r\n" (CRLF). This is needed
    for the case where the caller wants to output a chunk
    body as a series of buffers (i.e. "chunking a chunk").

* chunk_body

    A ConstBufferSequence representing a complete chunk.
    This includes the size, an optional set of chunk extensions,
    a caller provided buffer containing the body, and the
    required CRLF that follows.

* chunk_final

    A ConstBufferSequence representing a final chunk. It
    includes an optional set of caller-provided field trailers

* chunk_extensions

    A container for building a set of chunk extensions to use
    during serialization. The use of the container is optional,
    callers may provide their own buffer containing a correctly
    formatted set of chunk extensions, or they may use their
    own convenience container which meets the requirements.

The basic_fields container is modified to allow construction
outside the context of a message. The container can be used
to provide trailers to `chunk_final`.

Actions Required:

* Remove references to ChunkDecorators. Use the new chunk-encoding
  buffer sequences to manually produce a chunked payload body in
  the case where control over the chunk-extensions and/or trailers
  is required.
2017-07-20 08:15:31 -07:00
Vinnie Falco
02de2e5cbb Shrink chunk header buffer sequence size 2017-07-20 08:15:31 -07:00
Vinnie Falco
e9c44030e4 buffers_ref is Assignable 2017-07-20 08:15:31 -07:00
Vinnie Falco
6cec63fc9e Add basic_file_body.hpp 2017-07-20 08:15:31 -07:00
Vinnie Falco
42b81fb3a0 Remove unused file_path 2017-07-20 08:15:30 -07:00
Vinnie Falco
9bfb5374f1 Shrink buffer_prefix_view 2017-07-20 08:15:30 -07:00
Vinnie Falco
9ffb8e0f0f Add basic_dynamic_body.hpp
fix #606
2017-07-20 08:15:30 -07:00
Vinnie Falco
b65f0abd50 Javadoc tidying 2017-07-20 08:15:30 -07:00
Vinnie Falco
b8867abf6d Remove spurious fallthrough guidance 2017-07-20 08:15:30 -07:00
Vinnie Falco
30ea9bf668 Fix warning in root ca declaration 2017-07-20 08:15:30 -07:00
Vinnie Falco
93ae544f9c Tidy up file_posix unused variable 2017-07-20 08:15:30 -07:00
Vinnie Falco
fa3c256883 Tidy up dstream for existing Boost versions 2017-07-20 08:15:30 -07:00
Vinnie Falco
a49b442969 Add Boost.Locale utf8 benchmark comparison 2017-07-20 08:15:30 -07:00
Vinnie Falco
5788ed2574 Remove string_view_body
Actions Required:

* Use span_body<char> instead of string_view_body
2017-07-20 08:15:30 -07:00
Vinnie Falco
fa45e6ad07 Tidy up FieldsReader doc 2017-07-20 08:15:30 -07:00
Vinnie Falco
83cef67fb4 Header file tidying 2017-07-20 08:15:30 -07:00
Vinnie Falco
ff05be32af Fix warning in zlib 2017-07-20 08:15:30 -07:00
Vinnie Falco
6a46e48424 Add message keep_alive, chunked, content_length members 2017-07-20 08:15:30 -07:00
Vinnie Falco
aa473a6da4 Fix spurious uninitialized warning 2017-07-20 08:15:30 -07:00
Vinnie Falco
69b61656dd Use make_unique_noinit
fix #605
2017-07-20 08:15:30 -07:00
Vinnie Falco
f34d4f7204 span, string, vector bodies are public 2017-07-20 08:15:30 -07:00
Vinnie Falco
1f41c124c0 Documentation work 2017-07-20 08:15:30 -07:00
Vinnie Falco
80eb5af584 Add span 2017-07-20 08:15:30 -07:00
Vinnie Falco
e1de01ad13 Add vector_body
fix #580
2017-07-20 08:15:30 -07:00
Vinnie Falco
c6d7fa185b Tidy up basic_string_body
fix #580
2017-07-20 08:15:30 -07:00
Vinnie Falco
eb4a4d41f0 file_posix works without large file support
fix #632
2017-07-20 08:15:30 -07:00
Vinnie Falco
152720efaf Disable SSE4.2 optimizations 2017-07-20 08:15:30 -07:00
Vinnie Falco
a00ce1209b Fix parse illegal characters in obs-fold 2017-07-20 08:15:30 -07:00
Vinnie Falco
f657057c49 Add file_body_win32:
basic_file_body is specialized for file_win32:

When serializing file bodies to stream sockets on Windows,
the native platform function ::TransmitFile is used, improving
performance.
2017-07-20 08:15:30 -07:00
Vinnie Falco
cc198db10e serializing file_body is not const 2017-07-20 08:15:30 -07:00
Vinnie Falco
e06a055503 BodyReader, BodyWriter use two-phase init (API Change):
These types now perform error-based initialization in
a separate init() functions instead of in the constructor.

Actions Required:

* Modify instances of user-defined BodyReader and BodyWriter
  types to perfrom two-phase initialization, as per the
  updated documented type requirements.
2017-07-20 08:15:30 -07:00
Vinnie Falco
8a3df73ffc Serializer members are not const 2017-07-20 08:15:30 -07:00
Vinnie Falco
83403570bd Rename to serializer::keep_alive (API Change):
The serializer member is renamed to keep_alive()

Actions Required:

* Use serializer::keep_alive instead of serializer::close and
  take the logical NOT of the return value.
2017-07-20 08:15:30 -07:00
Vinnie Falco
a369f7d9ff Add serializer::chunked 2017-07-20 08:15:30 -07:00
Vinnie Falco
c52ddea11d Add serializer::get 2017-07-20 08:15:30 -07:00
Vinnie Falco
db59a92011 BodyReader may construct from a non-const message
fix #619
2017-07-20 08:15:30 -07:00
Vinnie Falco
0324dc371f Use Boost.Config 2017-07-20 08:15:30 -07:00
Vinnie Falco
f65a611b85 Always go through write_some:
HTTP stream serialization algorithms always go
through write_some or async_write some.
2017-07-20 08:15:30 -07:00
octopus-prime
288f363fa6 Using SSE4.2 intrinsics in basic_parser if available
fix #622
2017-07-20 08:15:30 -07:00
Vinnie Falco
b1a8cf8a13 file_body tests 2017-07-20 08:15:30 -07:00