Commit Graph

1930 Commits

Author SHA1 Message Date
Vinnie Falco
3518e4861b Number error codes from 1 (fix #54) 2017-07-20 08:12:09 -07:00
Vinnie Falco
796f20314c Update HTTP documentation (fix #61, #60, #59) 2017-07-20 08:12:09 -07:00
Vinnie Falco
c17f467601 Restyle sources 2017-07-20 08:12:09 -07:00
Vinnie Falco
9c11d3fc33 Set URI in generated WebSocket Upgrade requests (fix #64):
The 'resource' parameter in the call to stream::handshake is
used when building the HTTP request to perform the upgrade.
2017-07-20 08:12:09 -07:00
Vinnie Falco
e75fb7a4d4 Fix integer warnings in 64-bit Windows build 2017-07-20 08:12:09 -07:00
Vinnie Falco
2c4bdf933e Update documentation and images 2017-07-20 08:12:09 -07:00
Vinnie Falco
f3f4e2b425 Tidy up 32 and 64 bit build support (fix #49):
This fixes up support for building both 32 and 64 bit targets, especially on Windows.
2017-07-20 08:12:07 -07:00
Nik Bougalis
cbf1af97c5 Print the testcase header prior to logging (fix #56) 2017-07-20 08:12:07 -07:00
Vinnie Falco
fc677536bf Set version to 1.0.0-b10 2017-07-20 08:12:07 -07:00
Vinnie Falco
306cdf22d0 Update README.md for CppCon 2016 2017-07-20 08:12:07 -07:00
Vinnie Falco
a345327c7b Add WebSocket implementation comparison doc 2017-07-20 08:12:07 -07:00
Vinnie Falco
b2ea40c757 Add BEAST_EXPECT macro:
This macro is used in the unit test framework to assist in
reporting the file and line number of test failures.
2017-07-20 08:12:07 -07:00
Ties Jan Hefting
c07ba6aeeb Fix warnings 2017-07-20 08:12:07 -07:00
Vinnie Falco
728e7f648f Set version to 1.0.0-b9 2017-07-20 08:12:07 -07:00
wilsonianb
3ec83b31d9 Handle undefined VARIANT in cmake 2017-07-20 08:12:07 -07:00
Vinnie Falco
e6f1a765a1 Set version to 1.0.0-b8 2017-07-20 08:12:07 -07:00
Vinnie Falco
1947cb4e30 Fix rfc2616 Section 4.2 compliance:
basic_headers no longer combines fields with the same name by appending
a comma and concatenating the two values together. This was breaking
certain header fields which expect each value to be distinct, such as
the "Set-Cookie" header.

Now the container behaves more like a multi set with respect to insertion
of multiple values with the same field name. Additional member functions
are provided to provide extra functionality.
2017-07-20 08:12:07 -07:00
Vinnie Falco
98adfdb79c Update Example code in documentation 2017-07-20 08:12:07 -07:00
Jack Bond-Preston
d005b97c0b Fix to_string.hpp include path in example code 2017-07-20 08:12:07 -07:00
wilsonianb
a2fb4b099b Build coverage and usan Travis CI targets with CMake 2017-07-20 08:12:07 -07:00
seelabs
bc1eca81df Add cmake and clang build to travis 2017-07-20 08:12:07 -07:00
Casey Bodley
28bd98073e Use Threads::Threads interface library in cmake
in addition to passing ${CMAKE_THREAD_LIBS_INIT} to the linker, this
interface library will also add -pthread to the compile options when
supported

Signed-off-by: Casey Bodley <cbodley@redhat.com>
2017-07-20 08:12:07 -07:00
Vinnie Falco
908ac75f7c Set Beast version to 1.0.0-b7 2017-07-20 08:12:07 -07:00
Vinnie Falco
344e4c942c Add skip_body parser option 2017-07-20 08:12:07 -07:00
Vinnie Falco
8b71afa63f Remove extraneous header file status.hpp 2017-07-20 08:12:07 -07:00
Vinnie Falco
2b212e8844 Add usage example to rfc7230 javadocs 2017-07-20 08:12:07 -07:00
Vinnie Falco
19f15046b0 Fixes and documentation for teardown and use with SSL:
This solves a problem where clang and gcc locate the deleted
version of teardown and async_teardown instead of the overloaded
version. It requires overloads to add `teardown_tag` into the signature
so that the rules for argument dependent lookup can find the
right function. Improve documentation of teardown requirements

The documentation is updated to clearly explain the need for including
<beast/websocket/ssl.hpp> to use SSL streams with WebSocket.

The default implementations of teardown and async_teardown now use
static_assert to alert the user of improper usage, with comments
providing guidance for resolving the error.
2017-07-20 08:12:07 -07:00
Vinnie Falco
a6cb4fdfb2 Remove deprecated example http::stream wrapper 2017-07-20 08:12:07 -07:00
Vinnie Falco
5dd9bacff0 Simplify HTTP crawler example 2017-07-20 08:12:07 -07:00
Vinnie Falco
b42c928d5e Fixes and simplifications to HTTP example server:
The example HTTP server is updated to provide the correct MIME-type.
It no longer uses the now-deprecated http::stream class, since that
implementation does not provide flow control. A new example async_write
function is provided in the asynchronous server for managing the
lifetime of a message sent asynchronously.

The logging is thread-safe, and a bug causing connections to
malfunction is fixed.
2017-07-20 08:12:07 -07:00
Vinnie Falco
64206b5612 Qualify some calls:
This fixes a problem where a call to read() is ambiguous because
the argument list contains objects from both boost::asio and
beast::http.

Users invoking read may need to do so fully qualified, by writing:
    beast::http::read(...);
2017-07-20 08:12:07 -07:00
Vinnie Falco
62219add69 Initialize Writer in prepare:
Writer requires a call to Writer::init to call content_length. This
changes prepare to correctly call init. A consequences is that
prepare can now throw unexpectedly for user-defined writers that
can fail their initialization.
2017-07-20 08:12:07 -07:00
Vinnie Falco
227c2b131d Set Beast version to 1.0.0-b6 2017-07-20 08:12:07 -07:00
Vinnie Falco
589e18c199 rfc7230 compliance, limits, and tests for basic_parser_v1:
New parser set_option function for controlling independent size limits
on headers and body. By default request and response parsers are set up
with reasonable limits to prevent resource exhaustion attacks.

* Parser adheres strictly to rfc7230
* Increased test coverage
* Headers and body maximum size limit options
2017-07-20 08:12:07 -07:00
The Gitter Badger
e6d7ef35fc Add Gitter badge 2017-07-20 08:12:07 -07:00
Vinnie Falco
6c30ee1a98 Rename concept to DynamicBuffer (API change):
Conform to the Networking TS by renaming the Streambuf concept
to DynamicBuffer in all places. Values of types meeting the
requirements of DynamicBuffer are renamed to dynabuf.

See:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4478.html#requirements.dynamic_buffers

* Headers renamed
* Formal parameter names renamed
* Template argument types renamed
* Documentation updated
2017-07-20 08:12:07 -07:00
Vinnie Falco
e8019fa9d4 Add message swap members and free functions 2017-07-20 08:12:07 -07:00
Vinnie Falco
db68ce4d97 Add HTTP field value parsers:
ext_list:
    Iterable container of comma separated extensions, where each extension
    is a token followed an optional list of semicolon delimited parameters,
    with each parameter consisting of a name / value pair. The value can
    be a token or quoted-string.

param_list:
    Iterable container of semicolon delimited parameters, where each parameter
    is a name / value pair. The value can be a token or quoted-string.

token_list
    Iterable container of comma delimited tokens.

* Remove obsolete rfc2616 functions

* Refactor and consolidate case-insensitive string helpers
2017-07-20 08:12:07 -07:00
Vinnie Falco
8743a7a399 Tidy up use of GENERATING_DOCS 2017-07-20 08:12:07 -07:00
Vinnie Falco
3406729a8d Use beast::error_code instead of nested types 2017-07-20 08:12:07 -07:00
Vinnie Falco
8686b28cf2 Use SFINAE on return values 2017-07-20 08:12:07 -07:00
Vinnie Falco
472d90eb3b Add CHANGELOG 2017-07-20 08:12:07 -07:00
Nicholas Dudfield
4833dc3958 Travis CI updates:
* Run autobahn/valgrind tests when target branch in {master, develop}
* Add coveralls
* Show full stacktrace for usan (RIPD-1150)
* Manual launch of coverage (RIPD-1152)
* Use lldb on Darwin (RIPD-1152)
* Set defaults if not CI (RIPD-1152)
* Add autobahn result parser (RIPD-1147)
2017-07-20 08:12:07 -07:00
Vinnie Falco
b90aae26ab Set Beast version to 1.0.0-b5 2017-07-20 08:12:07 -07:00
Vinnie Falco
19256b85f0 HTTP improvements:
* Increased code coverage

* New Body concepts:
    is_Body
    is_ReadableBody
    is_WritableBody
2017-07-20 08:12:07 -07:00
Vinnie Falco
039244cda4 WebSocket ping, fixes, coverage:
* Improve test coverage
* tests for invokable in composed ops

* Update documentation
* Add License badge to README
* Target Windows 7 SDK and later
* Make role_type private
* Remove extra unused masking functions
* Allow stream reuse / reconnect after failure
* Restructure logic of composed operations
* Allow 0 for read_message_max meaning no limit
* Respect keep alive when building HTTP responses
* Check version in upgrade request
* Response with 426 status on unsupported WebSocket version
* Remove unnecessary Sec-WebSocket-Key in HTTP responses
* Rename to mask_buffer_size

* Remove maybe_throw
* Add ping, async_ping, async_on_pong
* Add ping_op
* Add pong_op
* Fix crash in accept_op
* Fix suspend in close_op
* Fix read_frame_op logic
* Fix crash in read_op
* Fix races in echo sync and async echo servers
2017-07-20 08:12:07 -07:00
Vinnie Falco
bfb840fe8e Fix parser off by one accessing buffer bug:
This fixed a bug where in some cases the parser could dereference
past the end of the caller provided buffer. The unit test is
improved to allocate memory in separate pieces for the split-buffer
matrix test, to give address-sanitizer more to work with.
2017-07-20 08:12:07 -07:00
Vinnie Falco
236f9598ce Always flush reporter output stream on log 2017-07-20 08:12:07 -07:00
Vinnie Falco
da313a002e Update documentation:
* http parse functions
* Parser concept
* More detail on concepts
* Better hyperlinking
2017-07-20 08:12:07 -07:00
Vinnie Falco
0d69868051 Fix resume of invokables in websocket composed operations:
When a suspended composed operation is resumed, the operation
now posts to the io_service to get in the correct context. Previously,
invokables resumed in the context of a different completion handler.

* asio_handler_invoke for any resumed invokable will return `true`.
2017-07-20 08:12:07 -07:00