Commit Graph
268 Commits
Author SHA1 Message Date
Vinnie Falco 02de2e5cbb Shrink chunk header buffer sequence size 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 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 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 83cef67fb4 Header file tidying 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 1f41c124c0 Documentation work 2017-07-20 08:15:30 -07:00
Vinnie Falco 37110f2d04 Add span_body 2017-07-20 08:15:30 -07:00
Vinnie Falco c9908eada0 Tidy up includes and javadocs 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 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 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
Vinnie Falco 731164bec2 Add serializer::limit 2017-07-20 08:15:30 -07:00
Vinnie Falco d750364d6f Shrink serializer buffers using buffers_ref 2017-07-20 08:15:30 -07:00
Vinnie Falco bb0e86ac01 Tidy up BEAST_NO_BIG_VARIANTS 2017-07-20 08:15:30 -07:00
Vinnie Falco 8bf46ffa05 Add file_body 2017-07-20 08:15:30 -07:00
Vinnie Falco abdd89fde8 Initialize local variable in basic_parser 2017-07-20 08:15:30 -07:00
Vinnie Falco 8e6fb759dd Documentation tidy 2017-07-20 08:15:29 -07:00
Vinnie Falco f5ae60613f serializer::next replaces serializer::get (API Change):
Actions Required:

* Use serializer::next instead of serializer::get at call sites
2017-07-20 08:15:29 -07:00
Vinnie Falco b0e52dd246 Refactor header and message constructors:
fix #581

* request and response headers now have convenience
  constructors so important fields like method, target,
  result, and version may be set upon construction.

Actions Required:

* Evaluate each message constructor call site and
  adjust the constructor argument list as needed.
2017-07-20 08:15:29 -07:00
Vinnie Falco e608acb791 basic_parser optimizations:
fix #185, fix #489

* SSE4.2 is detected

* basic_parser uses SSE4.2 if available

* basic_parser tries to parse on the initial buffer and if
  it does not find the end of header it shifts to a new
  strategy of waiting for the end of header to defeat
  slow loris attacks. This coincidentally is also faster
  than the previous algorithm.
2017-07-20 08:15:29 -07:00
Vinnie Falco 56948edd27 Newly constructed responses have a 200 OK result 2017-07-20 08:15:29 -07:00
Vinnie Falco fcc83e6a19 Concept check in basic_dynamic_body
fix #750
2017-07-20 08:15:29 -07:00
octopus-prime ebfc3f4537 Fix buffer overflow handling for string_body and mutable_body
fix #553, fix #558
2017-07-20 08:15:29 -07:00
Vinnie Falco c149321013 Return std::size_t from Body::writer::put (API Change)
`put` returns the number of bytes actually transferred
from the input buffers.

Actions Required:

* Return the number of bytes actually transferred from the
  input buffers in user defined `Body::writer::put` functions.
2017-07-20 08:15:29 -07:00
Vinnie Falco 120c38948e Fix spurious on_chunk invocation 2017-07-20 08:15:29 -07:00
Vinnie Falco 2843a497a0 Documentation revision
fix #567, fix #572
2017-07-20 08:15:29 -07:00
Vinnie Falco 8b5b8335e6 Fix extra ; warning 2017-07-20 08:15:29 -07:00
Vinnie Falco 7753d6eda2 Add parser::on_header to set a callback 2017-07-20 08:15:29 -07:00
Vinnie Falco 788550e833 Add basic_parser header and body limits:
fix #550

* default body limits are now 1MB/8MB
* default header limit is 8KB

Actions Required:

* Call body_limit and/or header_limit as needed to adjust the
  limits to suitable values if the defaults are insufficient.
2017-07-20 08:15:29 -07:00
Vinnie Falco 3c4ae2a098 Rename to message::base (API Change):
Actions Required:

* Change calls to message::header_part() with message::base()
2017-07-20 08:15:29 -07:00
Vinnie Falco 7abe6f6e09 Serialize in one step when possible
fix #546
2017-07-20 08:15:29 -07:00
Vinnie Falco 58d42cc803 Use BEAST_FALLTHROUGH to silence warnings
fix #545
2017-07-20 08:15:29 -07:00
Vinnie Falco f3eaa409d1 basic_parser optimizations 2017-07-20 08:15:29 -07:00
Vinnie Falco 2d6859831c Optimize field lookups 2017-07-20 08:15:29 -07:00
Vinnie Falco 43f8bb841a bad_target replaces bad_path (API Change):
Actions Required:

* Replace references to http::error::bad_path with http::error::bad_target
2017-07-20 08:15:29 -07:00
Vinnie Falco 90b51c5f79 Small speed up in fields comparisons 2017-07-20 08:15:29 -07:00