beast/CHANGELOG.md
2019-11-09 03:02:29 -08:00

3407 lines
86 KiB
Markdown

Version 276:
* https_get example sends the Host header
* Fix async_close error code when async_read times out
* Refactor zlib tests and fix enum typo
--------------------------------------------------------------------------------
Version 275:
* Async init-fns use the executor's default token
* Add basic_stream::rebind_executor
* Use automatically deduced return types for all async operations
* Support Concepts for completion token params
--------------------------------------------------------------------------------
Version 274:
* Fix leftovers in basic_parser corner case
--------------------------------------------------------------------------------
Version 273:
* Squelch spurious websocket timer assert
* Use the executor type in basic_stream timer
--------------------------------------------------------------------------------
Version 272:
* Add BEAST_THROWS
* Add zlib tests and fixes
--------------------------------------------------------------------------------
Version 271:
* Add HTTP async client with system_executor example
* Add WebSocket async client with system_executor example
* Fix data race in HTTP server examples
* Fix data race in WebSocket examples
--------------------------------------------------------------------------------
Version 270:
* Silence unused variables
* Fix typo
--------------------------------------------------------------------------------
Version 269:
* Fix /permissive- missing include
* Add test
--------------------------------------------------------------------------------
Version 268:
* root_certificates.hpp is not for production
--------------------------------------------------------------------------------
Version 267:
* Add package for Travis config
* Fix signed/unsigned mismatch in file_stdio::seek
* basic_stream dtor cannot throw
* cmake: check policy first
* Add default dtors to satisfy -Wnon-virtual-dtor
* Multiple I/O of the same type is not supported
--------------------------------------------------------------------------------
Version 266:
* Fix some missing deduced return types in the docs
--------------------------------------------------------------------------------
Version 265:
* Fix outgoing websocket message compression
--------------------------------------------------------------------------------
Version 264:
* Handle overflow in max size calculation in `basic_dynamic_body`
* Fix unused variable warnings in tests
* Fix missing initializer warning in `basic_fields`
* Remove unused functions in `impl/static_string.hpp`
* Fix unused variable warning in `multi_buffer`
* Fix header-only compilation errors in some configurations
* Workaround for miscompilation in MSVC 14.2
--------------------------------------------------------------------------------
Version 263:
* Update documentation
--------------------------------------------------------------------------------
Version 262:
* Fix deallocate in multi_buffer
--------------------------------------------------------------------------------
Version 261:
* Deduplicate `websocket::read_size_hint` definition
* Fix UB in websocket read tests
* Remove redundant includes in websocket
* Simplify websocket::detail::prng
* Don't over-allocate in http::basic_fields
* Fix multi_buffer allocation alignment
* Tidy up buffers_range
--------------------------------------------------------------------------------
Version 260:
* More split compilation in rfc7230.hpp
* Qualify calls to `beast::iequals` in basic_parser.ipp
* More split compilation in websocket/detail/mask.hpp
* Cleanup transitive includes in beast/core/detail/type_traits.hpp
* Simplify generation of sec-websocket-key
* Move detail::base64 helpers to tests
* Remove redundant includes in core
--------------------------------------------------------------------------------
Version 259:
* Reduce the number of instantiations of filter_token_list
* Remove the use of `static_string` from `http::fields`
* Add gcc-9 to AzP CI test matrix
* Enable split compilation in http::basic_fields
* Remove redundant instation of `static_string` in websocket
* Remove redundant use of `asio::coroutine` in `flat_stream`
* Remove unused includes from `test::stream`
* Move `char_buffer` into a separate file
* Fix coverage collection in AzP CI
* Improve performance of `http::string_to_verb`
* Replace uses of `net::coroutine` with `asio::coroutine`
* Replace uses of `net::spawn` with `asio::spawn`
* Use `beast::read_size` in `detail::read`
--------------------------------------------------------------------------------
Version 258:
* Fix separate compilation in CI
* Fix clang inititalization warning in websocket
* Remove redundant use of `yield_to` in parser tests
* Add VS 2019 AzP CI matrix item
* Clean up typo in chat websocket javascript client
--------------------------------------------------------------------------------
Version 257:
* Add b2 features for compile-time options used in testing
* Remove redundant dependencies in http/server/fast example
* Remove experimental/unit_test/thread.hpp
* Use `if` statement in basic_stream::transfer_op
* Fix flat_buffer copy members
--------------------------------------------------------------------------------
Version 256:
* Remove uses of the deprecated `buffers` function
* Remove uses of deprecated methods in websocket tests
* Remove redundant use of `static_string`
* Remove redundant template in service_base
* Expand CI matrix using Azure Pipelines
* Make chat websocket javascript client more user friendly
* `allocator_traits::construct` is used for user-defined types
* Add 1-element specialization for `buffers_cat`
* Fix `buffers_cat` iterator tests
* Don't pessimize-move
* Use steady_timer type
* Preserve operation_aborted on partial message
--------------------------------------------------------------------------------
Version 255:
* Add idle ping suspend test
* Fix moved-from executor in idle ping timeout
--------------------------------------------------------------------------------
Version 254:
* Fix data race in test::stream::connect
* Fix UB in websocket close tests
* Fix uninitalized memory use in deflate_stream
* Fix gcc-8 warning in websocket::stream
--------------------------------------------------------------------------------
Version 253:
* Fix async_detect_ssl handler type
* member get_executor const-correctness
* Fix min/max on MSVC
* Relax requirements for vector_body
--------------------------------------------------------------------------------
Version 252:
* More std::string_view fixes
* CI copies to libs/beast
--------------------------------------------------------------------------------
Version 251:
* Clean up CI scripts
* detect_ssl uses bool
* launder pointers
* Fix compilation on MSVC with std::string_view
* Replace static_string in parser
--------------------------------------------------------------------------------
Version 250:
* Use SaxonHE in reference generation
* Cleanup endianness conversions
* Set parser status and flags even if body_limit_ has been reached
--------------------------------------------------------------------------------
Version 249:
* Move friend function template definition
--------------------------------------------------------------------------------
Version 248:
* Don't use a moved-from handler
--------------------------------------------------------------------------------
Version 247:
* Fix async_base immediate completion
--------------------------------------------------------------------------------
Version 246:
* decorator ctor is explicit
--------------------------------------------------------------------------------
Version 245:
* decorator constructor is constrained
--------------------------------------------------------------------------------
Version 244:
* Tidy up declval in some traits
* Fix websocket keep-alive ping expiration
--------------------------------------------------------------------------------
Version 243:
* Fix some typos
* Tidy up file_stdio for VS2015
* Fix http::message constructor constraint
--------------------------------------------------------------------------------
Version 242:
* test::stream has deprecated lowest_layer for ssl
* MSVC uses ::fopen_s
* Fix http::message constructor constraint
* Check defined(BOOST_MSVC)
--------------------------------------------------------------------------------
Version 241:
* Tidy up a doc code snippet
* basic_parser::content_length is stable (API Change)
--------------------------------------------------------------------------------
Version 240:
* Fix ssl_stream teardown
--------------------------------------------------------------------------------
Version 239:
* More split compilation in HTTP
--------------------------------------------------------------------------------
Version 238:
* Refactor Jamfiles to work with release layout
--------------------------------------------------------------------------------
Version 237:
* cmake: Use static libs to speed up builds
--------------------------------------------------------------------------------
Version 236:
* root_certificates.hpp: brought in the server certificate
--------------------------------------------------------------------------------
Version 235:
* Fix self-assignment warning in buffer test
* Jamfile cleanup
--------------------------------------------------------------------------------
Version 234:
* Don't link to OpenSSL needlessly (bjam)
* HTTPS URLs in README.md
--------------------------------------------------------------------------------
Version 233:
* Check __ANDROID__ instead
* Use secure TLS/SSL versions
--------------------------------------------------------------------------------
Version 232:
* Fix close_socket for net::basic_socket changes
* Fix file_win32_write_op async initiation
* Fix basic_stream lowest_layer for ssl
--------------------------------------------------------------------------------
Version 231:
* Doc section names are stable
* Add missing include
* Constrain to_static_string to integers
--------------------------------------------------------------------------------
Version 230:
* Don't use dynamic_buffer_ref
* Remove dynamic_buffer_ref
* Fix completion handler invocation signatures
--------------------------------------------------------------------------------
Version 229:
* Rename to buffer_bytes
* Tidy up examples
* detect_ssl returns a bool
* Fix stable_async_base example
API Changes:
* handler_ptr is deprecated
Actions Required:
* Replace use of `handler_ptr` with `stable_async_base`
and `allocate_stable`.
--------------------------------------------------------------------------------
Version 228:
* Fix UB in decorator:
* Sync up convenience headers
* The Fields concept is deprecated (API Change)
* Fix includes.xsl for newer doxygen
* Tidy up quick reference
* SSL teardowns are in an associated namespace
--------------------------------------------------------------------------------
Version 227:
* Fix decorator for certain sizes
--------------------------------------------------------------------------------
Version 226:
* Support -fno-exceptions
* make_strand is in net::
* Fix HTTP parser static string calculation
* Move parser definitions to .ipp
* Appveyor uses msvc-14.0
--------------------------------------------------------------------------------
Version 225:
* Tidy up an unused function
* Fix wsload jamfile
* Examples use flat_buffer
* Remove session_alloc (API Change)
Actions Required:
* Don't use session_alloc
--------------------------------------------------------------------------------
Version 224:
* Remove extraneous error check in advanced-server-flex
* Advanced servers use HTTP parser interfaces for reading
* Reusing an HTTP parser returns an error
--------------------------------------------------------------------------------
Version 223:
* Add test::stream::service
* Add websocket service
* Pausation abandoning test
* Destroy abandoned websocket ops on shutdown
--------------------------------------------------------------------------------
Version 222:
* stream_base::timeout::suggested is a nested function
--------------------------------------------------------------------------------
Version 221:
* Rename to async_base, stable_async_base
* role_type is in boost/beast/core/role.hpp (API Change)
* Cleanup in test::stream internals
* Pass references as pointers to async_initiate
Actions Required:
* Include <boost/beast/core/role.hpp> or
define BOOST_BEAST_ALLOW_DEPRECATED=1
--------------------------------------------------------------------------------
Version 220:
* Documentation and release notes
--------------------------------------------------------------------------------
Version 219:
* More split definitions in test::stream
* Visual Studio 2017 minimum requirement for Windows
* Better treatment of SSL short reads
* ssl_stream is a public interface
* basic_parser is abstract, not CRTP (API Change)
* OpenSSL is required for tests and examples
--------------------------------------------------------------------------------
Version 218:
* detect_ssl, async_detect_ssl are public interfaces
* Add OpenSSL installation/setup instructions
* Enable split Beast compilation for tests
--------------------------------------------------------------------------------
Version 217:
* websocket idle pings
* RatePolicy documentation
* Pass strand to async_accept
* Fix file_body_win32
* Use async_initiate
* Check BOOST_NO_CXX11_THREAD_LOCAL
* Fast prng is pcg
--------------------------------------------------------------------------------
Version 216:
* Refactor websocket::stream operations
* Add websocket::stream timeouts
* Use suggested timeouts in Websocket examples
* Add make_strand
* Add RatePolicy to basic_stream
* Use async_initiate in basic_stream
* basic_stream connects are members
* Beast supports latest Asio changes (API Change)
* WebSocket Decorator is a socket option (API Change)
* Overloads of the following functions which accept a Decorator
are deprecated:
- accept, accept_ex
- handshake, handshake_ex
- async_accept, async_accept_ex
- async_handshake, async_handshake_ex
Actions Required:
* Code which passes decorator to any `websocket::stream` member
function should call `stream::set_option` instead with a newly
constructed `stream_base::decorator` object containing the
decorator. Alternatively, the macro `BOOST_BEAST_ALLOW_DEPRECATED`
may be defined to 1.
* Fix compilation errors required by Asio changes
--------------------------------------------------------------------------------
Version 215:
* basic_stream uses boost::shared_ptr
* Remove bind_back_handler
* bind_front_handler works with member functions
* Examples use bind_front_handler
* Add experimental test/handler.hpp
* Rename to async_op_base::invoke_now
* Add async_op_base::invoke
* Remove CppCon2018 example
* Examples use ssl_stream
--------------------------------------------------------------------------------
Version 214:
* Handler binders use the associated allocator
* Add detail::bind_continuation
* Rewrite the echo-op example
--------------------------------------------------------------------------------
Version 213:
* Fix posix_file::close handling of EINTR
* basic_stream subsumes stranded_stream:
* Use timeouts in HTTP server examples
* Use timeouts in HTTP client examples
* Use tcp_stream in WebSocket client examples
* Use tcp_stream in WebSocket server examples
* Use tcp_stream, HTTP timeouts in advanced servers
--------------------------------------------------------------------------------
Version 212:
* dynamic_buffer_ref tests and tidy
* flat_stream tests and tidy
* stranded_socket tests and tidy
* buffers_front tests
* Improved websocket stream documentation
--------------------------------------------------------------------------------
Version 211:
* close_socket is in stream_traits.hpp
* Improvements to test::stream
* Add stranded_stream
* Add flat_stream
* flat_buffer::clear preserves capacity
* multi_buffer::clear preserves capacity
* Fixes to rfc7230
--------------------------------------------------------------------------------
Version 210:
* Tidy up read implementation
* Fix stable_async_op_base javadoc
* Better handling of stream timeouts
* Add stream_traits.hpp
* Add executor_type trait
* Fix hexadecimal string conversion table
* is_completion_handler, type_traits.hpp are deprecated
* Fixes to test::stream::async_read
API Changes:
* Stream traits are now in stream_traits.hpp
* `is_file` is now in file_base.hpp
* is_completion_handler is deprecated
Actions Required:
* Include stream_traits.hpp as needed
* Include file_base.hpp as needed
* Use std::is_invocable instead of is_completion_handler
--------------------------------------------------------------------------------
Version 209:
* Faster http::string_to_field
* async_echo supports move-only handlers
* test::stream maintains a handler work guard
* Qualify buffer_copy, don't qualify buffer_size
* Add dynamic_buffer_ref
* Refactor quickref.xml
* Add buffer_size
--------------------------------------------------------------------------------
Version 208:
* Add get_lowest_layer free function
* Add lowest_layer_type metafunction
* Add close_socket, beast_close_socket customization
* Doc work
--------------------------------------------------------------------------------
Version 207
* Send from the strand
* Pass the correct handler in basic_timeout_stream
API Changes:
* lowest_layer is removed
Actions Required:
* Remove lowest_layer and lowest_layer_type from user-defined streams.
* Use the get_lowest_layer free function and the lowest_layer_type trait
as needed.
--------------------------------------------------------------------------------
Version 206
* Clear error codes idiomatically
* websocket stream uses shared_ptr<impl_type>
* Add websocket-chat-multi example
--------------------------------------------------------------------------------
Version 205
* Doc work
* Add detail/soft_mutex.hpp
* Add detail/prng.hpp
--------------------------------------------------------------------------------
Version 204
* Add basic_timeout_stream
* Unit test macros use the global suite
* Doc work
--------------------------------------------------------------------------------
Version 203
* Update networking refresher doc
* Include error code in call to set_option
* saved_handler is a public interface
* Use new saved_handler in websocket
* session_alloc is thread-safe
* examples use flat_buffer
* parse_until is not static
* Boost.System is header-only
--------------------------------------------------------------------------------
Version 202
* Use cxxstd instead of cxxflags
* Update coverage badge images
* Tidy up basic_stream_socket docs
* Refactor async_op_base
* Use async_op_base
* async_op_base is a public interface
* Add tests for bind_back_handler
* Add tests for async_op_base
--------------------------------------------------------------------------------
Version 201
* Decay bound arguments in handler wrapper parameters
* Add bind_back_handler
* Tidy up default-constructed iterators
* Add core errors and conditions
* New basic_stream_socket
--------------------------------------------------------------------------------
Version 200
* Don't include OpenSSL for core snippets
* Tidy up msvc-14 workaround in multi_buffer
* buffers_cat fixes and coverage
* Refactor buffers_adaptor
* Refactor buffers_range
* Fix and refactor buffers_cat
* Refactor buffers_prefix
* Add const and mutable buffer sequence traits
* Add buffers_iterator_type trait
* Use new buffer traits, remove old unused traits
* Optimize for size on buffers_cat preconditions
* Refactor buffers_suffix
* Tidy up flat_buffer tests
* Fix ostream prepare calculation for low limits
* Tidy up flat_static_buffer tests
* Add more tests for dynamic buffers
* Tidy up multi_buffer
* Refactor ostream
* Refactor static_buffer
* HTTP tidying
* Adjust static_asio lib options in Jamfile
* Add type_traits tests
* Add buffers_range_ref (replaces reference_wrapper parameter)
API Changes:
* buffers_adaptor replaces buffers_adapter (rename)
* make_printable replaces buffers (rename)
* Remove file_mode::append_new
Actions Required:
* Replace buffers_adapter.hpp with buffers_adaptor.hpp, and
replace buffers_adapter with buffers_adaptor. Or, define
BOOST_BEAST_ALLOW_DEPRECATED
* Replace call sites to use make_printable instead of buffers,
and also include make_printable.hpp instead of ostream.hpp.
* Replace file_mode::append_new with file_mode::append
or file_mode::append_existing instead of file_mode::append_new
--------------------------------------------------------------------------------
Version 199:
* Workarounds for msvc-14
* Fix Appveyor badge links
--------------------------------------------------------------------------------
Version 198:
* flat_buffer improvements
* multi_buffer improvements
* static_buffer improvements
* flat_static_buffer_improvements
* saved_handler maintains a work_guard (websocket)
* Add buffer_traits.hpp, buffers_type
* Tidy up experimental files
* Tidy up core files
* Fix bind_handler, bind_front_handler
* Improved handler bind wrapper tests
API Changes:
* Files return errc::bad_file_descriptor
* flat_static_buffer::reset is deprecated
Actions Required:
* Callers checking for errc::invalid_argument from calls to
file APIs should check for errc::bad_file_descriptor instead.
* Replace calls to flat_static_buffer::reset with
flat_static_buffer::clear
--------------------------------------------------------------------------------
Version 197:
* Improvements to echo-op example
* Crawler example clears the response before each read
* Use a struct instead of a pair in flat_stream (experimental)
API Changes:
* Refactor HTTP operations
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.
--------------------------------------------------------------------------------
Version 196:
* Tidy up calls to placement new
* Remove unused type_traits
* Simplify handler_ptr
--------------------------------------------------------------------------------
Version 195:
* net is a namespace alias for boost::asio
* Simplify multi_buffer and static_buffer sequences
* Documentation work
--------------------------------------------------------------------------------
Version 194:
* http::async_read returns the right byte count on error
* Add net namespace alias
* Don't use-after-free in test
* Tidy up ssl_stream (experimental)
* Dynamic buffer improvements
* Saved handlers are dispatched
--------------------------------------------------------------------------------
Version 193:
* Update ssl_stream signatures for networking changes
* Fix test::stream async_result transformation
* Tidy up test::stream
* Enable explicit instantiation of websocket::stream
--------------------------------------------------------------------------------
Version 192:
* Use mp11::integer_sequence
* Tidy up warnings and deprecated usage
* http::message is not-a boost::empty_value
* Fix link in docs
* Fixes to timeout services (experimental)
--------------------------------------------------------------------------------
Version 191:
* Add bind_front_handler
* Use bind_front_handler
* Simplify some type traits
* Use lean_tuple in buffers_cat
* Use lean_tuple in bind_handler, bind_front_handler
* Use mp11 in detail::variant
* Fix buffers_cat uninitialized warning
* Fix static_string uninitialized warning
* Fix warning in is_ssl_handshake
--------------------------------------------------------------------------------
Version 190:
* Add missing includes to convenience headers
* Unit test framework is experimental
* Add buffers_range
* Rename experimental directory
* Improve compilation of tests for continuous integration
* Fix visibility warnings in test
--------------------------------------------------------------------------------
Version 189-hf1:
* Fix broken doc link
* example/cppcon2018 only requires C++11
--------------------------------------------------------------------------------
Version 189:
* Add CppCon2018 chat server example and video
--------------------------------------------------------------------------------
Version 188:
* Remove extraneous strand from example
* Add missing include in http/read.ipp
* Test for gcc warning bug
* Fix a spurious gcc warning
--------------------------------------------------------------------------------
Version 187:
* Add experimental timeout_socket
* Fix warning in file tests
* Fix uninitialized comparison in buffers iterator
* Partial support for BOOST_NO_EXCEPTIONS
* Fix a spurious gcc warning
* Test for gcc warning bug
* Add missing include
* Remove extraneous strand from example
--------------------------------------------------------------------------------
Version 186:
* basic_fields uses intrusive base hooks
* Fix parsing of out-of-bounds hex values
--------------------------------------------------------------------------------
Version 185:
* Remove extraneous function
* Fix some typos
* Add BOOST_BEAST_USE_STD_STRING_VIEW
* Fix timer on websocket upgrade in examples
--------------------------------------------------------------------------------
Version 183:
* Fix a rare case of failed UTF8 validation
* Verify certificates in client examples
* Use boost::empty_value
* Workaround for http-server-fast and libstdc++
--------------------------------------------------------------------------------
Version 182:
* Silence ubsan false positive
--------------------------------------------------------------------------------
Version 181:
* Fix parse_dec algorithm
* Add parse_dec tests
--------------------------------------------------------------------------------
Version 180:
* Fix http_server_stackless_ssl.cpp example
--------------------------------------------------------------------------------
Version 179:
* Use the exchange() idiom in move constructors
* Most members of std::allocate are deprecated in C++17
* Remove some unused variables
--------------------------------------------------------------------------------
Version 178:
* Use static_cast instead
--------------------------------------------------------------------------------
Version 177:
* Add test for issue #1188
* Set /permissive-
* Check error in example set_option
--------------------------------------------------------------------------------
Version 176:
* Tidy up Quick Reference
* Fix array end calculation in utf8 assertion
* WebSocket masks use secure PRNG by default
--------------------------------------------------------------------------------
Version 175:
* Fix initialization warning
--------------------------------------------------------------------------------
Version 174:
* Fix Fields, FieldsWriter concept docs
* Fix BodyReader constructor requirements doc
--------------------------------------------------------------------------------
Version 173:
* Remove Autobahn testsuite doc note
* Fix buffers_adapter iterator value type
* Fix buffers_adapter max_size
* Fix buffers_prefix iterator decrement
* buffers_adapter improvements
* Add icy_stream Shoutcast stream filter
--------------------------------------------------------------------------------
Version 172:
* Tidy up websocket stream javadocs
* Fix move-only arguments in bind_handler
* Fix http::parser constructor javadoc
* Tidy up test::stream javadocs
* Tidy up composed operation doc
--------------------------------------------------------------------------------
Version 171:
* Add handler_ptr::has_value
* Remove spurious assert
* Fix unused variable warning
--------------------------------------------------------------------------------
Version 170:
* Add flat_stream to experimental
* Add ssl_stream to experimental
* Add test::error to experimental
* Add test::fail_count to experimental
* Add test::stream to experimental
* Use a shared string for example HTTP server doc roots
* Remove deprecated serializer::reader_impl()
* Remove deprecated Body reader and writer ctor signatures
* Add is_mutable_body_writer metafunction
* Add const and non-const overloads for message based http writes
* Use the root certificate which matches the fingerprint
--------------------------------------------------------------------------------
Version 169:
* Use buffers_to_string in tests
* Use boost::void_t
* Refactor HTTP write_op implementation
* Use fully qualified namespace in BOOST_BEAST_HANDLER_INIT
* New flat_stream example class
* Use flat_stream in ssl_stream example code
--------------------------------------------------------------------------------
Version 168:
* Use executor_work_guard in composed operations
* Revert verb.ipp change which caused spurious warnings
* Fix race in advanced server examples
--------------------------------------------------------------------------------
Version 167:
* Revert: Tidy up calls to post()
--------------------------------------------------------------------------------
Version 166:
* Use boost::is_convertible as a workaround
--------------------------------------------------------------------------------
Version 165:
* Fix BOOST_NO_CXX11_ALLOCATOR check
--------------------------------------------------------------------------------
Version 164:
* Fix masking on continuation frames
* Add Access-Control-Expose-Headers field constant
--------------------------------------------------------------------------------
Version 163:
* Tidy up calls to post()
* Fix narrowing warnings
--------------------------------------------------------------------------------
Version 162:
* Add asio_handler_invoke overloads for stream algorithms
* Improve websocket::stream::control_callback javadoc
--------------------------------------------------------------------------------
Version 161:
* Don't copy the handler in write_some_op
* Add move-only handler tests
* Fix handler parameter javadocs
--------------------------------------------------------------------------------
Version 160:
* Examples clear the HTTP message before reading
--------------------------------------------------------------------------------
Version 159:
* Fix typo in release notes
* Safe treatment of zero-length string arguments in basic_fields
* Some basic_fields operations now give the strong exception guarantee
--------------------------------------------------------------------------------
Version 158:
* Tidy up end_of_stream javadoc
* Tidy up websocket docs
* Examples set reuse_address(true)
* Advanced servers support clean shutdown via SIGINT or SIGTERM
* DynamicBuffer input areas are not mutable
* Tidy up some documentation
API Changes:
* get_lowest_layer is a type alias
Actions required:
* Replace instances of `typename get_lowest_layer<T>::type`
with `get_lowest_layer<T>`.
--------------------------------------------------------------------------------
Version 157:
* Fix teardown for TIME_WAIT
* Fix big-endian websocket masking
--------------------------------------------------------------------------------
Version 156:
* Don't use typeid
* Add release notes to documentation
* Fix stale link for void-or-deduced
--------------------------------------------------------------------------------
Version 155:
* Fix memory leak in advanced server examples
* Fix soft-mutex assert in websocket stream
* Fix fallthrough warnings
* Tidy up bind_handler doc
--------------------------------------------------------------------------------
Version 154:
* Type check completion handlers
* bind_handler doc update
* bind_handler works with boost placeholders
--------------------------------------------------------------------------------
Version 153:
* Remove BOOST_VERSION checks
* Use make_error_code for setting an error_code from errc
* Use boost::winapi::GetLastError() consistently
* Update README.md for branches
* Avoid string_view::clear
* Fix iterator version of basic_fields::erase
* Fix use-after-move in example request handlers
* Add Bishop Fox interview media
--------------------------------------------------------------------------------
Version 152:
* Refactor detect_ssl_op
* Disable gdb on Travis for Meltdown
WebSocket:
* Redistribute the read tests in the translation units
* Refactor error headers
* Add WebSocket error conditions
API Changes:
* Refactor WebSocket errors (API Change):
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.
--------------------------------------------------------------------------------
Version 151:
* Sanitizer failures are errors
* Depend on container_hash
* Fix high-ASCII in source file
WebSocket:
* Control callback is invoked on the execution context
* Add stream_fwd.hpp
* Remove unnecessary include
API Changes:
* http::parser is not MoveConstructible
* permessage-deflate is a compile-time feature
--------------------------------------------------------------------------------
Version 150:
* handler_ptr tests
* Documentation
API Changes:
* serializer::reader_impl is deprecated
Actions Required:
* Call serializer::writer_impl instead of reader_impl
--------------------------------------------------------------------------------
Version 149:
* built-in r-value return values can't be assigned
* Tidy up ssl_stream special members
* Fix CMakeLists.txt variable
* Protect calls from macros
* pausation always allocates
* Don't copy completion handlers
* handler_ptr is move-only
* Fix Travis memory utilization
API Changes:
* handler_ptr gives the strong exception guarantee
Actions Required:
* Change the constructor signature for state objects
used with handler_ptr to receive a const reference to
the handler.
--------------------------------------------------------------------------------
Version 148:
* Install codecov on codecov CI targets only
* Update reports for hybrid assessment
* Handle invalid deflate frames
--------------------------------------------------------------------------------
Version 147:
* Don't use boost::string_ref
* Use iterator wrapper in detail::buffers_range
HTTP:
* Tidy up basic_fields exception specifiers
WebSocket:
* control callback is copied or moved
* Send idle pings in advanced servers
--------------------------------------------------------------------------------
Version 146:
* Fix some typos
* Faster ascii_tolower
* Documentation tidying
* Fix typo in examples documentation
* Add detail::aligned_union and tidy up
* Use variant in buffers_cat_view
API Changes:
* Remove unintended public members of handler_ptr
--------------------------------------------------------------------------------
Version 145:
* Rename some detail functions
* Refactor basic_fields allocator internals
* Refactor HTTP async read composed operations
* null_buffers is deprecated
* Version 124 works with Boost 1.65.1 and earlier
* basic_fields does not support fancy pointers
--------------------------------------------------------------------------------
Version 144-hf1:
* Update reports for hybrid assessment
* Handle invalid deflate frames
* Install codecov on codecov CI targets only
--------------------------------------------------------------------------------
Version 144:
* Fix websocket permessage-deflate negotiation
--------------------------------------------------------------------------------
Version 143:
* Fix autobahn report link
--------------------------------------------------------------------------------
Version 142:
* Warn about upcoming API changes to certain concepts
* Fix name typo in http write test
--------------------------------------------------------------------------------
Version 141:
* Tidy up some documentation
--------------------------------------------------------------------------------
Version 140:
* Fix some integer warnings in 64-bit builds
* Fix utf8_checker test failures
* Fix signature for async_read_some, and tests
* Tidy up basic_parser
* Some basic_fields special members are protected
--------------------------------------------------------------------------------
Version 139:
* Revisit boost library min/max guidance
--------------------------------------------------------------------------------
Version 138:
* Tidy up some documentation
--------------------------------------------------------------------------------
Version 137:
* ConstBufferSequence mandates pointer equivalence
* Add FieldsWriter constructor requirement
* Tidy up some documented constructor syntax
--------------------------------------------------------------------------------
Version 136:
* Tidy up message doc image
--------------------------------------------------------------------------------
Version 135:
* Fix typo in example server help text
--------------------------------------------------------------------------------
Version 134:
* Add static_buffer_base default constructor definition
--------------------------------------------------------------------------------
Version 133:
* Remove const&& overload of message::body
--------------------------------------------------------------------------------
Version 132:
* Tidy up project folders in CMakeLists.txt
* Rename Cmake variables for clarity
* Add ref-qualified overloads for message::body
* Tidy up FieldsReader doc
API Changes:
* Fields::writer replaces Fields::reader
* BodyReader and BodyWriter names are swapped
Actions Required:
* Rename reader to writer for user defined Fields
* Swap the reader and writer names for user defined Body types
* Swap use of is_body_reader and is_body_writer
--------------------------------------------------------------------------------
Version 131:
* basic_fields returns const values
* Set SNI hostname in example SSL clients
--------------------------------------------------------------------------------
Version 130:
* Tidy up fallthrough warning
* Remove cxx11_sfinae_expr build requirement from tests
--------------------------------------------------------------------------------
Version 129:
* Add autobahn test report to doc
* Documentation tidying
* Fix prepare_payload: chunked is HTTP/1.1
--------------------------------------------------------------------------------
Version 128:
* Update doc links
* Add explicit-failures-markup.xml
HTTP:
* Add message::need_eof
* Use message::need_eof in example servers
* Use synchronous writes in chunk output example
WebSocket:
* Fix utf8 validation for autobahn
* Temporarily disable utf8 validation tests
* Tidy up fast websocket server host names
API Changes:
* Remove serializer::keep_alive
* Remove serializer::chunked
* Add has_content_length_impl to Fields
* Add message::has_content_length
* Rename some basic_parser observers
Actions Required:
* Call message::keep_alive instead of serializer::keep_alive
* Call serializer::get::chunked instead of serializer::chunked
* Implement has_content_length_impl for user-defined Fields
* Remove the "is_" prefix from call sites invoking certain basic_parser members
--------------------------------------------------------------------------------
Version 127:
* Add BOOST_BEAST_NO_POSIX_FADVISE
* Version command line option for HTTP client examples
* More Jamfile compiler requirements for tests
--------------------------------------------------------------------------------
Version 126:
* Add CppCon2017 presentation link
* Update README.md
* Update stream write documentation for end of stream changes
* Tidy up unused variable warnings
* Don't return end_of_stream on win32 file body writes
* Fix doc typo
* Fix shadowing in session_alloc
* Fix executor type compilation
* Add Travis tests with the default compilers
* Update Boost.WinAPI usage to the new location and namespace.
* Fix buffered_read_stream async_read_some signature
--------------------------------------------------------------------------------
Version 125:
API Changes:
* Update for Net-TS Asio
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
--------------------------------------------------------------------------------
Version 124:
* Fix for a test matrix compiler
* Fix basic_fields javadoc
API Changes:
* http write returns success on connection close
Actions Required:
* Add code to servers to close the connection after successfully
writing a message where `message::keep_alive()` would return `false`.
--------------------------------------------------------------------------------
Version 123:
* Use unit-test subtree
* Fix spurious race in websocket close test
* Check compiler feature in Jamfile
* Clear previous message fields in parser
--------------------------------------------------------------------------------
Version 122:
* Add test for issue 807
* assert on empty buffer in websocket read
* Fix zlib symbol conflicts
* CMake 3.5.1 is required
* config.hpp is not a public header
* Add missing case in error test
--------------------------------------------------------------------------------
Version 121:
* Add test for issue 802
* Fix enum and non-enum in conditional exp. warning
--------------------------------------------------------------------------------
Version 120:
* Fix spurious strand_ in advanced_server_flex
* OpenSSL targets are optional (CMake)
--------------------------------------------------------------------------------
Version 119:
* Tidy up doc badge links
--------------------------------------------------------------------------------
Version 118:
* file_win32 opens for read-only in shared mode
* Remove unused strands in server examples
* Update build instructions
* Doc root is at index.html
HTTP:
* Fix writing header into std::ostream
--------------------------------------------------------------------------------
Version 117:
* Add buffers_to_string
API Changes:
* buffers_suffix replaces consuming_buffers
* buffers_prefix replaces buffer_prefix
* buffers_prefix_view replaces buffer_prefix_view
* buffers_front replaces buffer_front
* buffers_cat replaces buffer_cat
* buffers_cat_view replaces buffer_cat_view
* Remove buffers_suffix::get
Actions Required:
* Use buffers_suffix instead of consuming_buffers
* Use buffers_prefix instead of buffer_prefix
* Use buffers_prefix_view instead of buffer_prefix_view
* Use buffers_front instead of buffer_front
* Use buffers_cat instead of buffer_cat
* Use buffers_cat_view instead of buffer_cat_view
* Avoid calling buffers_suffix::get
--------------------------------------------------------------------------------
Version 116:
API Changes:
* message::body is a member function
* message::version is a member function
Actions Required:
* Call member function message::body instead of accessing
the data member at call sites.
* Call member function message::version instead of accessing
the version member at call sites.
--------------------------------------------------------------------------------
Version 115:
* Update README.md master doc link
--------------------------------------------------------------------------------
Version 114:
(No changes)
--------------------------------------------------------------------------------
Version 113:
* Fix handler signature in async_read_header
* Remove field_range copy constructor
--------------------------------------------------------------------------------
Version 112:
* Update websocket notes
API Changes:
* WebSocket writes return the bytes transferred
* HTTP reads and writes return bytes transferred
Actions Required:
* Modify websocket write completion handlers to receive
the extra std::size_t bytes_transferred parameter.
* Modify HTTP read and/or write completion handlers to
receive the extra std::size_t bytes_transferred parameter.
--------------------------------------------------------------------------------
Version 111:
WebSocket:
* Fix utf8 check split code point at buffer end
* Refactor stream operations and tests plus coverage
* Suspended ops special members
--------------------------------------------------------------------------------
Version 110:
* Refactor stream open state variable
* Refactor websocket stream members
* Refactor websocket stream: fixes and tests
* Add test::stream::lowest_layer
* Fix invalid iterator in test reporter
--------------------------------------------------------------------------------
Version 109:
* refactor test::stream
WebSocket:
* Fix async_read_some handler signature
* websocket close fixes and tests
* websocket handshake uses coroutine
* websocket ping tests
* Fix websocket close_op resume state
* websocket write tests
* split up websocket tests
* websocket read tests
API Changes:
* websocket accept refactoring
Actions Required:
* Do not call websocket accept overloads which take
both a message and a buffer sequence, as it is
illegal per rfc6455.
--------------------------------------------------------------------------------
Version 108:
* Fix argument parsing in HTTP examples
* Don't use async_write_msg in examples
--------------------------------------------------------------------------------
Version 107:
* Use test::stream
WebSocket
* Fix done state for WebSocket reads
* Fix utf8 check for compressed frames
* Rename frame and header buffer types
--------------------------------------------------------------------------------
Version 106:
* Dynamic buffer input areas are mutable
* Add flat_static_buffer::reset
HTTP:
* Fix for basic_parser::skip(true) and docs
WebSocket:
* websocket test improvements
* Remove obsolete write_op
* Refactor write_op
* Refactor ping_op
* Refactor fail_op
* Refactor read_op
* Refactor close_op
* Refactor read_op + fail_op
* Websocket close will automatically drain
* Autobahn|Testsuite fixes
* Tidy up utf8_checker and tests
--------------------------------------------------------------------------------
Version 105:
* Fix compile error in websocket snippet
* Tidy up Jamfile and tests
--------------------------------------------------------------------------------
Version 104:
* Remove unused include
* Use #error in config.hpp
* Only set -std=c++11 on Travis
* Only set /permissive- on Appveyor
* Tidy up some test warnings
* tools/ renamed from build/
WebSocket:
* Fix pausation::save
--------------------------------------------------------------------------------
Version 103:
* Boost test matrix fixes
* Tidy up allocator usage
* Example HTTP server fixes
--------------------------------------------------------------------------------
Version 102:
* Section headings in examples
--------------------------------------------------------------------------------
Version 101:
* Refactor all examples
--------------------------------------------------------------------------------
Version 100:
* Fix doc convenience includes
* Fix doc includes
* Remove unused test header
* Rename test macros
* Reorder define test macro params
* vcxproj workaround for include symlinks
* Add variadic min/max
WebSocket:
* Remove obsolete frame tests
* Refactor fail/clode code
* Call do_fail from read_some
* eof on accept returns error::closed
* Fix stream::read_size_hint calculation
* Documentation
API Changes:
* Calls to stream::close and stream::async_close will
automatically perform the required read operations
* drain_buffer is removed
* role_type replaces teardown_tag
Actions Required:
* Remove calling code which drains the connection after
calling stream::close or stream::async_close
* Replace code which uses drain_buffer. For websocket::stream,
it is no longer necessary to manually drain the connection
after closing.
* Modify signatures of teardown and async_teardown to use
role_type instead of teardown_tag
* Change calls to teardown and async_teardown to pass the
correct role_type, client or server, depending on context.
--------------------------------------------------------------------------------
Version 99:
* Log the value of LIB_DIR for doc builds (debug)
* Use correct handler signature in fail_op
* Fix doc typo
--------------------------------------------------------------------------------
Version 98:
* basic_fields::key_compare is noexcept
* Fix bench-zlib cmake
* Use unique names Jam projects
* Trim utf8 checker test
--------------------------------------------------------------------------------
Version 97:
* Update redirect
--------------------------------------------------------------------------------
Version 96:
* Move bench/ to test/
* Move extras/ to test/
* Use <valgrind> property
* Rename wsload compile target
* Fix library.json
* Update boostorg links
* Add bench-zlib
* Faster zlib tests
* Less compression on websocket test
--------------------------------------------------------------------------------
Version 95:
* Tidy up Travis build scripts
* Move scripts to build/
* Fix race in test::pipe
* close on test::pipe teardown
* Add test::stream
* Tidy up static_buffer braced init
* Fix html redirect
* Add valgrind variant, fix false positives
--------------------------------------------------------------------------------
Version 94:
* Use off-site Quick Start link temporarily
--------------------------------------------------------------------------------
Version 93:
* Unset BOOST_COROUTINES_NO_DEPRECATION_WARNING
--------------------------------------------------------------------------------
Version 92:
* Fix typo in test/CMakeLists.txt
* basic_fields::value_type is not copyable
* Update repository links in source comments
* Ignore Content-Length in some cases
* Tidy up doc snippet paths
* Use off-site doc link
--------------------------------------------------------------------------------
Version 91:
* Adjust redirect html
* Don't build pre-C++11
* source.dox is path-independent
* Tidy up namespace qualifiers
* Tidy up MSVC CMakeLists.txt
* Optimize buffered_read_stream
* constexpr in derived buffers
* Set BOOST_ASIO_NO_DEPRECATED
* Use Asio array optimization in static_buffer_base
* Rename wstest source file
* Use fopen_s on Windows
* Fix Appveyor script
* Update project metadata
* Move benchmarks to bench/
* Fix doc title
* Build stand-alone doc
* Update doc copyrights
* Refactor test build scripts
WebSocket:
* Tidy up websocket javadocs
* Refactor accept, handshake ops
* Use read buffer instead of buffered stream
API Changes
* control frame callbacks are non-const references
Actions Required:
* Modify calls to set the control frame callback, to
pass non-const reference instances, and manage the
lifetime of the instance.
--------------------------------------------------------------------------------
Version 90:
* Fix websocket read of zero length message
* Fix typo in equal_range
* Output to integrated documentation
--------------------------------------------------------------------------------
Version 89:
* Fix CONTRIBUTING.md links
--------------------------------------------------------------------------------
Version 88:
* Update doc links in README.md
* Refactor tests Jamfile
* Don't use program_options
WebSocket:
* Fix uninitialized frame done
--------------------------------------------------------------------------------
Version 87:
* Update appveyor for Boost branch
* Rename to BEAST_EXPECT
* variant fixes and tests
* Update README, add CONTRIBUTING.md and CODE_OF_CONDUCT.md
--------------------------------------------------------------------------------
Version 86:
* Boost prep
* Remove use of lexical_cast
* Use custom variant
* Update README.md
* Add local-travis.sh
* Use winapi
* Update CMakeLists.txt for boost
* Update documentation for boost
* Update copyrights
* Remove spurious declaration
* Tidy up Jamfile
* Normalize doc build scripts
* Use configured doxygen and xsltproc
* Fix Deferred Body Type Example Documentation
* Add library metadata
API Changes:
* websocket read returns the number of bytes inserted
Actions Required:
* Change the signature of completion handlers used with
websocket::stream::async_read to void(error_code, std::size_t)
--------------------------------------------------------------------------------
Version 85:
* Fix test failure
* Tidy up test warning
--------------------------------------------------------------------------------
Version 84:
* Tidy up buffer_front
* static_buffer::consume improvement
* multi_buffer is type-check friendly
* bind_handler allows placeholders
* Add consuming_buffers::get
WebSocket:
* WebSocket read optimization
API Changes:
* 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
--------------------------------------------------------------------------------
Version 83:
* Add flat_static_buffer::mutable_data
* Add buffer_front
* Add wstest compression option
* Turn some flat_static_buffer_tests on
* Documentation work
* read_some, async_read_some return bytes used
* Fix private timer::clock_type
WebSocket
* Add wstest compression option
* Fix buffer lifetime in websocket write
API Changes:
* Add static_buffer
Actions Required:
* Callers who depend on static_buffer returning sequences of
exactly length one should switch to flat_static_buffer.
--------------------------------------------------------------------------------
Version 82:
* Documentation tidying
* is_invocable works with move-only types
* Use std::function and reference wrapper
* Add session_alloc to example/common
* Silence spurious warning
HTTP
* Fix extraneous argument in async_write_header
WebSocket
* stream tidying
* Add rd_close_ to websocket stream state
* stream uses flat_buffer
* accept requires a message
* Add wstest benchmark tool
API Changes:
* Rename to flat_static_buffer and flat_static_buffer_base
Actions Required:
* Rename static_buffer to flat_static_buffer_base
* Rename static_buffer_n to flat_static_buffer
--------------------------------------------------------------------------------
Version 81:
* Pass string_view by value
* better is_final on empty_base_optimization
* Suppress incorrect GCC warning
* multi_buffer ctor is explicit
* File is not copy-constructible
API Changes:
* Refactor basic_parser, chunk parsing:
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.
--------------------------------------------------------------------------------
Version 80:
* Javadoc tidying
* Add basic_dynamic_body.hpp
* Shrink buffer_prefix_view
* Remove unused file_path
* Add basic_file_body.hpp
* buffers_ref is Assignable
HTTP
* Shrink chunk header buffer sequence size
API Changes:
* Refactor chunked-encoding serialization
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.
--------------------------------------------------------------------------------
Version 79:
* Remove spurious fallthrough guidance
--------------------------------------------------------------------------------
Version 78:
* Add span
* Documentation work
* Use make_unique_noinit
* Fix warning in zlib
* Header file tidying
* Tidy up FieldsReader doc
* Add Boost.Locale utf8 benchmark comparison
* Tidy up dstream for existing Boost versions
* Tidy up file_posix unused variable
* Fix warning in root ca declaration
HTTP:
* Tidy up basic_string_body
* Add vector_body
* span, string, vector bodies are public
* Fix spurious uninitialized warning
* fields temp string uses allocator
API Changes:
* Add message::keep_alive()
* Add message::chunked() and message::content_length()
* Remove string_view_body
Actions Required:
* Change user defined implementations of Fields and
FieldsReader to meet the new requirements.
* Use span_body<char> instead of string_view_body
--------------------------------------------------------------------------------
Version 77:
* file_posix works without large file support
--------------------------------------------------------------------------------
Version 76:
* Always go through write_some
* Use Boost.Config
* BodyReader may construct from a non-const message
* Add serializer::get
* Add serializer::chunked
* Serializer members are not const
* serializing file_body is not const
* Add file_body_win32
* Fix parse illegal characters in obs-fold
* Disable SSE4.2 optimizations
API Changes:
* Rename to serializer::keep_alive
* BodyReader, BodyWriter use two-phase init
Actions Required:
* Use serializer::keep_alive instead of serializer::close and
take the logical NOT of the return value.
* Modify instances of user-defined BodyReader and BodyWriter
types to perform two-phase initialization, as per the
updated documented type requirements.
--------------------------------------------------------------------------------
Version 75:
* Use file_body for valid requests, string_body otherwise.
* Construct buffer_prefix_view in-place
* Shrink serializer buffers using buffers_ref
* Tidy up BEAST_NO_BIG_VARIANTS
* Shrink serializer buffers using buffers_ref
* Add serializer::limit
* file_body tests
* Using SSE4.2 intrinsics in basic_parser if available
--------------------------------------------------------------------------------
Version 74:
* Add file_stdio and File concept
* Add file_win32
* Add file_body
* Remove common/file_body.hpp
* Add file_posix
* Fix Beast include directories for cmake targets
* remove redundant flush() from example
--------------------------------------------------------------------------------
Version 73:
* Jamroot tweak
* Verify certificates in SSL clients
* Adjust benchmarks
* Initialize local variable in basic_parser
* Fixes for gcc-4.8
HTTP:
* basic_parser optimizations
* Add basic_parser tests
API Changes:
* Refactor header and message constructors
* serializer::next replaces serializer::get
Actions Required:
* Evaluate each message constructor call site and
adjust the constructor argument list as needed.
* Use serializer::next instead of serializer::get at call sites
--------------------------------------------------------------------------------
Version 72:
HTTP:
* Tidy up set payload in http-server-fast
* Refine Body::size specification
* Newly constructed responses have a 200 OK result
* Refactor file_body for best practices
* Add http-server-threaded example
* Documentation tidying
* Various improvements to http_server_fast.cpp
WebSocket:
* Add websocket-server-async example
--------------------------------------------------------------------------------
Version 71:
* Fix extra ; warning
* Documentation revision
* Fix spurious on_chunk invocation
* Call prepare_payload in HTTP example
* Check trailers in test
* Fix buffer overflow handling for string_body and mutable_body
* Concept check in basic_dynamic_body
* Tidy up http_sync_port error check
* Tidy up Jamroot /permissive-
WebSockets:
* Fine tune websocket op asserts
* Refactor websocket composed ops
* Allow close, ping, and write to happen concurrently
* Fix race in websocket read op
* Fix websocket write op
* Add cmake options for examples and tests
API Changes:
* Return `std::size_t` from `Body::writer::put`
Actions Required:
* Return the number of bytes actually transferred from the
input buffers in user defined `Body::writer::put` functions.
--------------------------------------------------------------------------------
Version 70:
* Serialize in one step when possible
* Add basic_parser header and body limits
* Add parser::on_header to set a callback
* Fix BEAST_FALLTHROUGH
* Fix HEAD response in file_service
API Changes:
* Rename to message::base
* basic_parser default limits are now 1MB/8MB
Actions Required:
* Change calls to message::header_part() with message::base()
* Call body_limit and/or header_limit as needed to adjust the
limits to suitable values if the defaults are insufficient.
--------------------------------------------------------------------------------
Version 69:
* basic_parser optimizations
* Use BEAST_FALLTHROUGH to silence warnings
* Add /permissive- to msvc toolchain
--------------------------------------------------------------------------------
Version 68:
* Split common tests to a new project
* Small speed up in fields comparisons
* Adjust buffer size in fast server
* Use string_ref in older Boost versions
* Optimize field lookups
* Add const_body, mutable_body to examples
* Link statically on cmake MSVC
API Changes:
* Change BodyReader, BodyWriter requirements
* Remove BodyReader::is_deferred
* http::error::bad_target replaces bad_path
Actions Required:
* Change user defined instances of BodyReader and BodyWriter
to meet the new requirements.
* Replace references to http::error::bad_path with http::error::bad_target
--------------------------------------------------------------------------------
Version 67:
* Fix doc example link
* Add http-server-small example
* Merge stream_base to stream and tidy
* Use boost::string_view
* Rename to http-server-fast
* Appveyor use Boost 1.64.0
* Group common example headers
API Changes:
* control_callback replaces ping_callback
Actions Required:
* Change calls to websocket::stream::ping_callback to use
websocket::stream::control_callback
* Change user defined ping callbacks to have the new
signature and adjust the callback definition appropriately.
--------------------------------------------------------------------------------
Version 66:
* string_param optimizations
* Add serializer request/response aliases
* Make consuming_buffers smaller
* Fix costly potential value-init in parser
* Fix unused parameter warning
* Handle bad_alloc in parser
* Tidy up message piecewise ctors
* Add header aliases
* basic_fields optimizations
* Add http-server example
* Squelch spurious warning on gcc
--------------------------------------------------------------------------------
Version 65:
* Enable narrowing warning on msvc cmake
* Fix integer types in deflate_stream::bi_reverse
* Fix narrowing in static_ostream
* Fix narrowing in ostream
* Fix narrowing in inflate_stream
* Fix narrowing in deflate_stream
* Fix integer warnings
* Enable unused variable warning on msvc cmake
--------------------------------------------------------------------------------
Version 64:
* Simplify buffered_read_stream composed op
* Simplify ssl teardown composed op
* Simplify websocket write_op
* Exemplars are compiled code
* Better User-Agent in examples
* async_write requires a non-const message
* Doc tidying
* Add link_directories to cmake
API Changes:
* Remove make_serializer
Actions Required:
* Replace calls to make_serializer with variable declarations
--------------------------------------------------------------------------------
Version 63:
* Use std::to_string instead of lexical_cast
* Don't use cached Boost
* Put num_jobs back up on Travis
* Only build and run tests in variant=coverage
* Move benchmarks to a separate project
* Only run the tests under ubasan
* Tidy up CMakeLists.txt
* Tidy up Jamfiles
* Control running with valgrind explicitly
--------------------------------------------------------------------------------
Version 62:
* Remove libssl-dev from a Travis matrix item
* Increase detail::static_ostream coverage
* Add server-framework tests
* Doc fixes and tidy
* Tidy up namespaces in examples
* Clear the error faster
* Avoid explicit operator bool for error
* Add http::is_fields trait
* Squelch harmless not_connected errors
* Put slow tests back for coverage builds
API Changes:
* parser requires basic_fields
* Refine FieldsReader concept
* message::prepare_payload replaces message::prepare
Actions Required:
* Callers using `parser` with Fields types other than basic_fields
will need to create their own subclass of basic_parser to work
with their custom fields type.
* Implement chunked() and keep_alive() for user defined FieldsReader types.
* Change calls to msg.prepare to msg.prepare_payload. For messages
with a user-defined Fields, provide the function prepare_payload_impl
in the fields type according to the Fields requirements.
--------------------------------------------------------------------------------
Version 61:
* Remove Spirit dependency
* Use generic_cateogry for errno
* Reorganize SSL examples
* Tidy up some integer conversion warnings
* Add message::header_part()
* Tidy up names in error categories
* Flush the output stream in the example
* Clean close in Secure WebSocket client
* Add server-framework SSL HTTP and WebSocket ports
* Fix shadowing warnings
* Tidy up http-crawl example
* Add multi_port to server-framework
* Tidy up resolver calls
* Use one job on CI
* Don't run slow tests on certain targets
API Changes:
* header::version is unsigned
* status-codes is unsigned
--------------------------------------------------------------------------------
Version 60:
* String comparisons are public interfaces
* Fix response message type in async websocket accept
* New server-framework, full featured server example
--------------------------------------------------------------------------------
Version 59:
* Integrated Beast INTERFACE (cmake)
* Fix base64 alphabet
* Remove obsolete doc/README.md
API Changes:
* Change Body::size signature (API Change):
Actions Required:
* For any user-defined models of Body, change the function signature
to accept `value_type const&` and modify the function definition
accordingly.
--------------------------------------------------------------------------------
Version 58:
* Fix unaligned reads in utf8-checker
* Qualify size_t in message template
* Reorganize examples
* Specification for http read
* Avoid `std::string` in websocket
* Fix basic_fields insert ordering
* basic_fields::set optimization
* basic_parser::put doc
* Use static string in basic_fields::reader
* Remove redundant code
* Fix parsing chunk size with leading zeroes
* Better message formal parameter names
API Changes:
* `basic_fields::set` renamed from `basic_fields::replace`
Actions Required:
* Rename calls to `basic_fields::replace` to `basic_fields::set`
--------------------------------------------------------------------------------
Version 57:
* Fix message.hpp javadocs
* Fix warning in basic_parser.cpp
* Integrate docca for documentation and tidy
--------------------------------------------------------------------------------
Version 56:
* Add provisional IANA header field names
* Add string_view_body
* Call on_chunk when the extension is empty
* HTTP/1.1 is the default version
* Try harder to find Boost (cmake)
* Reset error codes
* More basic_parser tests
* Add an INTERFACE cmake target
* Convert buffer in range loops
--------------------------------------------------------------------------------
Version 55:
* Don't allocate memory to handle obs-fold
* Avoid a parser allocation using non-flat buffer
* read_size replaces read_size_helper
--------------------------------------------------------------------------------
Version 54:
* static_buffer coverage
* flat_buffer coverage
* multi_buffer coverage
* consuming_buffers members and coverage
* basic_fields members and coverage
* Add string_param
* Retain ownership when reading using a message
* Fix incorrect use of [[fallthrough]]
API Changes:
* basic_fields refactor
--------------------------------------------------------------------------------
Version 53:
* Fix basic_parser::maybe_flatten
* Fix read_size_helper usage
--------------------------------------------------------------------------------
Version 52:
* flat_buffer is an AllocatorAwareContainer
* Add drain_buffer class
API Changes:
* `auto_fragment` is a member of `stream`
* `binary`, `text` are members of `stream`
* read_buffer_size is a member of `stream`
* read_message_max is a member of `stream`
* `write_buffer_size` is a member of `stream`
* `ping_callback` is a member of stream
* Remove `opcode` from `read`, `async_read`
* `read_frame` returns `bool` fin
* `opcode` is private
* finish(error_code&) is a BodyReader requirement
Actions Required:
* Change call sites which use `auto_fragment` with `set_option`
to call `stream::auto_fragment` instead.
* Change call sites which use message_type with `set_option`
to call `stream::binary` or `stream::text` instead.
* Change call sites which use `read_buffer_size` with `set_option` to
call `stream::read_buffer_size` instead.
* Change call sites which use `read_message_max` with `set_option` to
call `stream::read_message_max` instead.
* Change call sites which use `write_buffer_size` with `set_option` to
call `stream::write_buffer_size` instead.
* Change call sites which use `ping_callback1 with `set_option` to
call `stream::ping_callback` instead.
* Remove the `opcode` reference parameter from calls to synchronous
and asynchronous read functions, replace the logic with calls to
`stream::got_binary` and `stream::got_text` instead.
* Remove the `frame_info` parameter from all read frame call sites
* Check the return value 'fin' for calls to `read_frame`
* Change ReadHandlers passed to `async_read_frame` to have
the signature `void(error_code, bool fin)`, use the `bool`
to indicate if the frame is the last frame.
* Remove all occurrences of the `opcode` enum at call sites
--------------------------------------------------------------------------------
Version 51
* Fix operator<< for header
* Tidy up file_body
* Fix file_body::get() not setting the more flag correctly
* Use BOOST_FALLTHROUGH
* Use BOOST_STRINGIZE
* DynamicBuffer benchmarks
* Add construct, destroy to handler_alloc
* Fix infinite loop in basic_parser
API Changes:
* Tune up static_buffer
* multi_buffer implementation change
Actions Required:
* Call sites passing a number to multi_buffer's constructor
will need to be adjusted, see the corresponding commit message.
--------------------------------------------------------------------------------
Version 50
* parser is constructible from other body types
* Add field enumeration
* Use allocator more in basic_fields
* Fix basic_fields allocator awareness
* Use field in basic_fields and call sites
* Use field in basic_parser
* Tidy up basic_fields, header, and field concepts
* Fields concept work
* Body documentation work
* Add missing handler_alloc nested types
* Fix chunk delimiter parsing
* Fix test::pipe read_size
* Fix chunk header parsing
API Changes:
* Remove header_parser
* Add verb to on_request for parsers
* Refactor prepare
* Protect basic_fields special members
* Remove message connection settings
* Remove message free functions
* Remove obsolete serializer allocator
* http read_some, async_read_some don't return bytes
--------------------------------------------------------------------------------
Version 49
* Use <iosfwd> instead of <ostream>
HTTP:
* Add HEAD request example
API Changes:
* Refactor method and verb
* Canonicalize string_view parameter types
* Tidy up empty_body writer error
* Refactor header status, reason, and target
--------------------------------------------------------------------------------
Version 48
* Make buffer_prefix_view public
* Remove detail::sync_ostream
* Tidy up core type traits
API Changes:
* Tidy up chunk decorator
* Rename to buffer_cat_view
* Consolidate parsers to parser.hpp
* Rename to parser
--------------------------------------------------------------------------------
Version 47
* Disable operator<< for buffer_body
* buffer_size overload for basic_multi_buffer::const_buffers_type
* Fix undefined behavior in pausation
* Fix leak in basic_flat_buffer
API Changes:
* Refactor treatment of request-method
* Refactor treatment of status code and obsolete reason
* Refactor HTTP serialization and parsing
--------------------------------------------------------------------------------
Version 46
* Add test::pipe
* Documentation work
API Changes:
* Remove HTTP header aliases
* Refactor HTTP serialization
* Refactor type traits
--------------------------------------------------------------------------------
Version 45
* Workaround for boost::asio::basic_streambuf type check
* Fix message doc image
* Better test::enable_yield_to
* Fix header::reason
* Documentation work
* buffer_view skips empty buffer sequences
* Disable reverse_iterator buffer_view test
--------------------------------------------------------------------------------
Version 44
* Use BOOST_THROW_EXCEPTION
* Tidy up read_size_helper and dynamic buffers
* Require Boost 1.58.0 or later
* Tidy up and make get_lowest_layer public
* Use BOOST_STATIC_ASSERT
* Fix async return values in docs
* Fix README websocket example
* Add buffers_adapter regression test
* Tidy up is_dynamic_buffer traits test
* Make buffers_adapter meet requirements
--------------------------------------------------------------------------------
Version 43
* Require Boost 1.64.0
* Fix strict aliasing warnings in buffers_view
* Tidy up buffer_prefix overloads and test
* Add write limit to test::string_ostream
* Additional constructors for consuming_buffers
--------------------------------------------------------------------------------
Version 42
* Fix javadoc typo
* Add formal review notes
* Make buffers_view a public interface
--------------------------------------------------------------------------------
Version 41
* Trim Appveyor matrix rows
* Concept revision and documentation
* Remove coveralls integration
* Tidy up formal parameter names
WebSocket
* Tidy up websocket::close_code enum and constructors
API Changes
* Return http::error::end_of_stream on HTTP read eof
* Remove placeholders
* Rename prepare_buffer(s) to buffer_prefix
* Remove handler helpers, tidy up hook invocations
--------------------------------------------------------------------------------
Version 40
* Add to_static_string
* Consolidate get_lowest_layer in type_traits.hpp
* Fix basic_streambuf movable trait
* Tidy up .travis.yml
--------------------------------------------------------------------------------
Version 39
Beast versions are now identified by a single integer which
is incremented on each merge. The macro BEAST_VERSION
identifies the version number, currently at 39. A version
setting commit will always be at the tip of the master
and develop branches.
* Use beast::string_view alias
* Fixed braced-init error with older gcc
HTTP
* Tidy up basic_parser javadocs
WebSocket:
* Add websocket async echo ssl server test:
* Fix eof error on ssl::stream shutdown
API Changes:
* Refactor http::header contents
* New ostream() returns dynamic buffer output stream
* New buffers() replaces to_string()
* Rename to multi_buffer, basic_multi_buffer
* Rename to flat_buffer, basic_flat_buffer
* Rename to static_buffer, static_buffer_n
* Rename to buffered_read_stream
* Harmonize concepts and identifiers with net-ts
* Tidy up HTTP reason_string
--------------------------------------------------------------------------------
1.0.0-b38
* Refactor static_string
* Refactor base64
* Use static_string for WebSocket handshakes
* Simplify get_lowest_layer test
* Add test_allocator to extras/test
* More flat_streambuf tests
* WebSocket doc work
* Prevent basic_fields operator[] assignment
API Changes:
* Refactor WebSocket error codes
* Remove websocket::keep_alive option
--------------------------------------------------------------------------------
1.0.0-b37
* CMake hide command lines in .vcxproj Output windows"
* Rename to detail::is_invocable
* Rename project to http-bench
* Fix flat_streambuf
* Add ub sanitizer blacklist
* Add -funsigned-char to asan build target
* Fix narrowing warning in table constants
WebSocket:
* Add is_upgrade() free function
* Document websocket::stream thread safety
* Rename to websocket::detail::pausation
API Changes:
* Provide websocket::stream accept() overloads
* Refactor websocket decorators
* Move everything in basic_fields.hpp to fields.hpp
* Rename to http::dynamic_body, consolidate header
--------------------------------------------------------------------------------
1.0.0-b36
* Update README.md
--------------------------------------------------------------------------------
1.0.0-b35
* Add Appveyor build scripts and badge
* Tidy up MSVC CMake configuration
* Make close_code a proper enum
* Add flat_streambuf
* Rename to BEAST_DOXYGEN
* Update .gitignore for VS2017
* Fix README.md CMake instructions
API Changes:
* New HTTP interfaces
* Remove http::empty_body
--------------------------------------------------------------------------------
1.0.0-b34
* Fix and tidy up CMake build scripts
--------------------------------------------------------------------------------
1.0.0-b33
* Require Visual Studio 2015 Update 3 or later
HTTP
* Use fwrite return value in file_body
WebSocket
* Set internal state correctly when writing frames
* Add decorator unit test
* Add write_frames unit test
--------------------------------------------------------------------------------
1.0.0-b32
* Add io_service completion invariants test
* Update CMake scripts for finding packages
API Changes:
* Remove http Writer suspend and resume feature
--------------------------------------------------------------------------------
1.0.0-b31
* Tidy up build settings
* Add missing dynabuf_readstream member
WebSocket
* Move the handler, don't copy it
--------------------------------------------------------------------------------
1.0.0-b30
WebSocket
* Fix race in pings during reads
* Fix race in close frames during reads
* Fix race when write suspends
* Allow concurrent websocket async ping and writes
--------------------------------------------------------------------------------
1.0.0-b29
* Fix compilation error in non-template class
* Document type-pun in buffer_cat
* Correctly check ostream modifier (/extras)
HTTP
* Fix Body requirements doc
* Fix illegal HTTP characters accepted as hex zero
* Fix Writer return value documentation
WebSocket
* Fix race in writes during reads
* Fix doc link typo
--------------------------------------------------------------------------------
1.0.0-b28
* Split out and rename test stream classes
* Restyle async result constructions
* Fix HTTP split parse edge case
--------------------------------------------------------------------------------
1.0.0-b27
* Tidy up tests and docs
* Add documentation building instructions
API Changes:
* Invoke callback on pings and pongs
* Move basic_streambuf to streambuf.hpp
--------------------------------------------------------------------------------
1.0.0-b26
* Tidy up warnings and tests
--------------------------------------------------------------------------------
1.0.0-b25
* Fixes for WebSocket echo server
* Fix 32-bit arm7 warnings
* Remove unnecessary include
* WebSocket server examples and test tidying
* Fix deflate setup bug
API Changes:
* Better handler_ptr
--------------------------------------------------------------------------------
1.0.0-b24
* bjam use clang on MACOSX
* Simplify Travis package install specification
* Add optional yield_to arguments
* Make decorator copyable
* Add WebSocket permessage-deflate extension support
--------------------------------------------------------------------------------
1.0.0-b23
* Tune websocket echo server for performance
* Add file and line number to thrown exceptions
* Better logging in async echo server
* Add copy special members
* Fix message constructor and special members
* Travis CI improvements
--------------------------------------------------------------------------------
1.0.0-b22
* Fix broken Intellisense
* Implement the Asio deallocation-before-invocation guarantee
* Add handler helpers
* Avoid copies in handler_alloc
* Update README.md example programs
* Fix websocket stream read documentation
* Disable Boost.Coroutine deprecation warning
* Update documentation examples
--------------------------------------------------------------------------------
1.0.0-b21
* Remove extraneous includes
--------------------------------------------------------------------------------
1.0.0-b20
ZLib
* Add ZLib module
API Changes:
* Rename HTTP identifiers
--------------------------------------------------------------------------------
1.0.0-b19
* Boost library min/max guidance
* Improvements to code coverage
* Use boost::lexical_cast instead of std::to_string
* Fix prepare_buffers value_type
* Fix consuming_buffers value_type
* Better buffer_cat
HTTP
* Make chunk_encode public
* Add write, async_write, operator<< for message_headers
* Add read, async_read for message_headers
* Fix with_body example
WebSocket
* Optimize utf8 validation
* Optimize mask operations
API Changes:
* Refactor message and message_headers declarations
* prepared_buffers is private
* consume_buffers is removed
--------------------------------------------------------------------------------
1.0.0-b18
* Increase optimization settings for MSVC builds
HTTP
* Check invariants in parse_op:
* Clean up message docs
WebSocket
* Write buffer option does not change capacity
* Close connection during async_read on close frame
* Add pong, async pong to stream
Core
* Meet DynamicBuffer requirements for static_streambuf
* Fix write_frame masking and auto-fragment handling
Extras
* unit_test::suite fixes:
- New overload of fail() specifies file and line
- BEAST_EXPECTS only evaluates the reason string on a failure
* Add zlib module
--------------------------------------------------------------------------------
1.0.0-b17
* Change implicit to default value in example
* Tidy up some declarations
* Fix basic_streambuf::capacity
* Add basic_streambuf::alloc_size
* Parser callbacks may not throw
* Fix Reader concept doc typo
* Add is_Reader trait
* Tidy up basic_headers for documentation
* Tidy up documentation
* Add basic_parser_v1::reset
* Fix handling of body_what::pause in basic_parser_v1
* Add headers_parser
* Engaged invokable is destructible
* Improve websocket example in README.md
* Refactor read_size_helper
API Changes:
* Added init() to Reader requirements
* Reader must be nothrow constructible
* Reader is now constructed right before reading the body
- The message passed on construction is filled in
* Rework HTTP concepts:
- Writer uses write instead of operator()
- Refactor traits to use void_t
- Remove is_ReadableBody, is_WritableBody
- Add has_reader, has_writer, is_Reader, is_Writer
- More friendly compile errors on failed concept checks
* basic_parser_v1 requires all callbacks present
* on_headers parser callback now returns void
* on_body_what is a new required parser callback returning body_what
--------------------------------------------------------------------------------
1.0.0-b16
* Make value optional in param-list
* Frame processing routines are member functions
* Fix on_headers called twice from basic_parser_v1
* Constrain parser_v1 constructor
* Improve first line serialization
* Add pause option to on_headers interface
* Refactor base_parser_v1 callback traits:
* Refine Parser concept
* Relax ForwardIterator requirements in FieldSequence
* Fix websocket failure testing
* Refine Writer concept and fix exemplar in documentation
API Changes:
* Rename mask_buffer_size to write_buffer_size
* Make auto_fragment a boolean option
The message class hierarchy is refactored (breaking change):
* One message class now models both HTTP/1 and HTTP/2 messages
* message_v1, request_v1, response_v1 removed
* New classes basic_request and basic_response model
messages without the body.
Error resolution: Callers should use message, request,
and response instead of message_v1, request_v1, and
response_v1 respectively.
--------------------------------------------------------------------------------
1.0.0-b15
* rfc7230 section 3.3.2 compliance
* Add HTTPS example
* Add Secure WebSocket example
* Fix message_v1 constructor
* Tidy up DynamicBuffer requirements
* Tidy up error types and headers
* Fix handling empty HTTP headers in parser_v1
--------------------------------------------------------------------------------
1.0.0-b14
* Add missing rebind to handler_alloc
* Fix error handling in http server examples
* Fix CMake scripts for MinGW
* Use BOOST_ASSERT
* Better WebSocket decorator
* Update and tidy documentation
--------------------------------------------------------------------------------
1.0.0-b13
* dstream improvements
* Remove bin and bin64 directories
* Tidy up .vcxproj file groupings
--------------------------------------------------------------------------------
1.0.0-b12
* Use -p to print suites from unit test main.
* BEAST_EXPECTS to add a reason string to test failures
* Fix unit test runner to output all case names
* Update README for build requirements
* Rename to CHANGELOG.md
--------------------------------------------------------------------------------
1.0.0-b11
* Set URI in generated WebSocket Upgrade requests
* Rename echo server class and file names
* Rename to DynamicBuffer in some code and documentation
* Fix integer warnings in Windows builds
* Add 32 and 64 bit Windows build support
* Update README for build instructions and more
* Add repository and documentation banners
--------------------------------------------------------------------------------
1.0.0-b10
* Fix compilation warnings
* Add websocketpp comparison to HTML documentation
--------------------------------------------------------------------------------
1.0.0-b9
* Fix CMakeLists.txt
--------------------------------------------------------------------------------
1.0.0-b8
* Fix include in example code
* Fix basic_headers rfc2616 Section 4.2 compliance
--------------------------------------------------------------------------------
1.0.0-b7
* Fix prepare by calling init. prepare() can throw depending on the
implementation of Writer. Publicly provided beast::http writers never throw.
* Fixes to example HTTP server
* Fully qualify ambiguous calls to read and parse
* Remove deprecated http::stream wrapper
* Example HTTP server now calculates the MIME-type
* Fixes and documentation for teardown and use with SSL:
* Add example code to rfc7230 javadocs
* Remove extraneous header file <beast/http/status.hpp>
* Add skip_body parser option
--------------------------------------------------------------------------------
1.0.0-b6
* Use SFINAE on return values
* Use beast::error_code instead of nested types
* Tidy up use of GENERATING_DOCS
* Remove obsolete RFC2616 functions
* Add message swap members and free functions
* Add HTTP field value parser containers: ext_list, param_list, token_list
* Fixes for some corner cases in basic_parser_v1
* Configurable limits on headers and body sizes in basic_parser_v1
API Changes:
* ci_equal is moved to beast::http namespace, in rfc7230.hpp
* "DynamicBuffer","dynabuf" renamed from "Streambuf", "streambuf". See:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4478.html#requirements.dynamic_buffers
* basic_parser_v1 adheres to rfc7230 as strictly as possible
--------------------------------------------------------------------------------