3 * Revert removal of lowest_layer_type from test stream.
5 --------------------------------------------------------------------------------
9 * Fix documentation build.
11 --------------------------------------------------------------------------------
15 * Fix C++20 coroutine tests.
16 * Fix links to Bishop Fox Security Assessment.
18 --------------------------------------------------------------------------------
22 * Add Bishop Fox Security Assessment.
24 --------------------------------------------------------------------------------
28 * Fix assert when basic_stream used as underlying of ssl::stream with zero-length write.
29 * Add Sec-* HTTP headers.
30 * Fix nullptr implicit cast on `fields::set()`.
32 --------------------------------------------------------------------------------
37 * Fix erroneous error when HTTP `body_limit` is `none`.
38 * Fix unreachable code warning with MSVC.
39 * Fix logic error in advance_server_flex.
40 * Fix file open with append_existing flag on posix.
41 * Websocket SSL `teardown` also tears down underlying TCP.
42 * Update WebSocket examples to set TLS SNI.
43 * Add handler tracking locations to websocket.
44 * Add handler tracking locations to tcp teardown.
45 * Eliminate spurious uninitialised variable warning in detect_ssl.
46 * Add handler tracking locations to flat_stream.
47 * Add handler tracking locations to detect_ssl.
48 * Add handler tracking locations to icy_stream.
49 * Add handler tracking locations to basic_stream.
50 * Add handler tracking locations to http operations.
54 * Previously, `teardown` and `async_teardown` of a websocket connection over SSL
55 would only shut down the SSL layer, leaving the TCP layer connected. Now the
56 SSL teardown will tear down both the SSL and TCP layers, cleanly shutting down
57 the TCP connection and closing the socket.
58 Should the client expect the TCP socket to remain connected, users will need to
59 re-engineer their code.
61 --------------------------------------------------------------------------------
65 * Fix compile errors under Clang 3.4
66 * Fix portability bug in websocket server sync example.
68 --------------------------------------------------------------------------------
72 * Fix race in http-crawl example.
74 --------------------------------------------------------------------------------
78 * Support BOOST_ASIO_NO_TS_EXECUTORS.
79 * Use strand<> rather than legacy executor io_context::strand.
80 * Use dispatch/post free functions to be independent of executor concept.
81 * New name for polymorphic executor. Trait for detecting new executors.
82 * Handler invoke and allocation hooks are deprecated.
84 --------------------------------------------------------------------------------
88 * iless and iequal take part in Heterogeneous Lookup
89 * Fix `max` compile error
90 * Deprecate `string_param` (API Change)
94 * `string_param`, which was previously the argument type when setting field values
95 has been replaced by `string_view`. Because of this, it is no longer possible to
96 set message field values directly as integrals.
98 Users are required to convert numeric arguments to a string type prior to calling
101 Beast provides the non-allocating `to_static_string()` function for this purpose.
103 To set Content-Length field manually, call `message::content_length`.
105 --------------------------------------------------------------------------------
109 * Remove buffers_adapter.hpp (API Change)
110 * Remove zlib error `invalid_code_lenths`(sic) (API Change)
111 * Remove `core/type_traits.hpp` (API Change)
112 * Remove `reset` function from `flat_static_buffer` (API Change)
113 * Remove `mutable_data_type` from Dyanmic Buffers (API Change)
114 * Remove deprecated lowest_layer from test::stream
115 * Remove handler_pointer (API Change)
116 * Remove websocket::role_type (API Change)
117 * Remove accept_ex and handshake_ex variants (API Change)
118 * Rename to BOOST_BEAST_ALLOW_DEPRECATED (API Change)
122 * The file `core/buffers_adapter.hpp` has been removed along with the deprecated
123 alias typename `buffers_adapter`. Affected programs should use
124 `core/buffers_adapator.hpp` and the type `buffers_adaptor`.
126 * The error code enum `invalid_code_lenths` was a synonym of `invalid_code_lengths`.
127 Affected programs should be modified to use `invalid_code_lengths`.
129 * The `core/type_traits.hpp` public header has been removed and along with it
130 the type trait `is_completion_handler`. Beast uses the CompletionHandler correctness
131 checks provided by Asio. In a c++20 environment, these convert to concept checks.
133 * The `reset` function has been removed from `flat_static_buffer`. Use the
134 `clear` function instead.
136 * Code that depends on `mutable_data_type` should be refactored to use
137 `mutable_buffers_type`. Classes affected are:
140 - `flat_static_buffer`
144 * handler_ptr has been removed. Users should use net::bind_handler and/or
145 bind_front_handler instead.
147 * websocket::role_type has been removed. Users should use beast::role_type instead.
149 * The following deprecated functions have been removed:
150 - websocket::async_accept_ex
151 - websocket::async_handshake_ex
152 - websocket::accept_ex
153 - websocket::handshake_ex
155 Programs still using these names should be refactored to use the `decorator` feature and
156 the remaining handshake and accept functions.
158 * The macro BOOST_BEAST_NO_DEPRECATED will no longer be noticed by Beast. The only way to
159 enable deprecated functionality is now the macro BOOST_BEAST_ALLOW_DEPRECATED which is
160 undefined by default. That is, all deprecated behaviour is disabled by default.
162 --------------------------------------------------------------------------------
166 * Parser body_limit is optional (API Change)
167 * Fix basic_stream expires_after (API Change)
168 * Fix FILE namespace qualification
172 * The signature of basic_parser<>::body_limit(n) has changed. It now accepts an
173 optional std::uint64_t. The caller may indicate that no body limit is required
174 by calling body_limit(boost::none). The default limits remain in place in order
175 to maintain 'safe by default' behaviour.
177 * basic_stream::expires_after used to take a nanosecond duration type argument. This
178 required users on systems where the steady_clock::duration_type was less accurate
179 to explicity duration_cast when calling this function, making code non-portable.
180 The duration type is now that of the embedded steady_clock.
182 --------------------------------------------------------------------------------
186 * Fix FILE namespace qualification
187 * Fix http read bytes_transferred (API Change)
191 The following functions did not previously report the number of bytes consumed
198 - http::async_read_header
199 - http::async_read_some
201 As of now, the `bytes_transferred` return value will indicate the number of bytes
202 consumed by the parser when parsing an http message.
206 - Modify calling code which depends on the value returned from these functions.
208 --------------------------------------------------------------------------------
212 * Fix async_connect documentation
213 * Fix assert in websocket
214 * No automatic User-Agent in WebSocket
218 * No automatic User-Agent in WebSocket
219 Beast websocket streams will no longer automatically set the
220 User-Agent HTTP header during client handshake. This header is not required
221 by the WebSocket standard. If this field is required, user code may set it
224 --------------------------------------------------------------------------------
228 * Fix compile errors on Visual Studio with /std:c++latest
229 * Fix standalone compilation error with std::string_view
230 * OpenSSL 1.0.2 or later is required
231 * Fix c++20 deprecation warning in span_body
233 --------------------------------------------------------------------------------
237 * Test websocket with use_awaitable
238 * Test http write with use_awaitable
239 * Test http read with use_awaitable
240 * Fix use buffered_read_stream with use_awaitable
241 * Implement is_completion_token_for trait
242 * Test use_awaitable with basic_stream
243 * Fix async_detect_ssl with use_awaitable
244 * Add clang coroutines-ts to circleci config
246 --------------------------------------------------------------------------------
250 * Travis build host now bionic
251 * Update Release Notes
255 * Fix Host header in websocket examples
257 --------------------------------------------------------------------------------
261 * Fix Content-Length parsing
264 --------------------------------------------------------------------------------
268 * Remove CODE_OF_CONDUCT.md
269 * Refactor websocket read
270 * Correct buffer_bytes documentation
271 * Fix examples to dispatch to strand
272 * Ensure basic_stream::close will not throw
274 --------------------------------------------------------------------------------
278 * Refactor multi_buffer
279 * Refactor buffers_adapter
280 * Refactor static_buffer
281 * Refactor flat_buffer
282 * Refactor flat_static_buffer
283 * Fix missing include in sha1.hpp
284 * Fix ostream warning
285 * Field digest is endian-independent
286 * update broken links in README
291 * Nested const and mutable buffer types for all
292 Beast dynamic buffers are refactored. Affected types:
299 * Nested mutable_data_type in Beast dynamic buffers is deprecated:
303 * Use nested mutable_buffers_type instead of mutable_data_type,
304 or define BOOST_BEAST_ALLOW_DEPRECATED
306 --------------------------------------------------------------------------------
310 * Translate some win32 errors to net error codes
311 * enable circleci integration
312 * flat_buffer shrink_to_fit is noexcept
313 * moved-from dynamic buffers do not clear if different allocator
316 --------------------------------------------------------------------------------
320 * fix compilation macro documentation
321 * examples use strands correctly
322 * update root certificates in examples
323 * clarify end-of-file behaviour in File::read docs
324 * file_body returns short_read on eof during read
325 * fix bug in win32 file_body
327 --------------------------------------------------------------------------------
331 * ostream_buffer satisfies preconditions of DynamicBuffer_v1::commit
332 * Add accessor function to File member of basic_file_body
336 * Use superproject docca
337 * Fix release build of docs
338 * file_win32 supports UTF-8 paths
339 * file_stdio supports unicode paths
341 --------------------------------------------------------------------------------
347 * file_win32 bodies respect http::serializer::split
349 --------------------------------------------------------------------------------
354 * Use docca master branch
356 --------------------------------------------------------------------------------
360 * Use regular throw in test
363 --------------------------------------------------------------------------------
367 * Use regular throw in test
369 --------------------------------------------------------------------------------
373 * Update release notes
375 --------------------------------------------------------------------------------
379 * https_get example sends the Host header
380 * Fix async_close error code when async_read times out
381 * Refactor zlib tests and fix enum typo
383 --------------------------------------------------------------------------------
387 * Async init-fns use the executor's default token
388 * Add basic_stream::rebind_executor
389 * Use automatically deduced return types for all async operations
390 * Support Concepts for completion token params
392 --------------------------------------------------------------------------------
396 * Fix leftovers in basic_parser corner case
398 --------------------------------------------------------------------------------
402 * Squelch spurious websocket timer assert
403 * Use the executor type in basic_stream timer
405 --------------------------------------------------------------------------------
410 * Add zlib tests and fixes
412 --------------------------------------------------------------------------------
416 * Add HTTP async client with system_executor example
417 * Add WebSocket async client with system_executor example
418 * Fix data race in HTTP server examples
419 * Fix data race in WebSocket examples
421 --------------------------------------------------------------------------------
425 * Silence unused variables
428 --------------------------------------------------------------------------------
432 * Fix /permissive- missing include
435 --------------------------------------------------------------------------------
439 * root_certificates.hpp is not for production
441 --------------------------------------------------------------------------------
445 * Add package for Travis config
446 * Fix signed/unsigned mismatch in file_stdio::seek
447 * basic_stream dtor cannot throw
448 * cmake: check policy first
449 * Add default dtors to satisfy -Wnon-virtual-dtor
450 * Multiple I/O of the same type is not supported
452 --------------------------------------------------------------------------------
456 * Fix some missing deduced return types in the docs
458 --------------------------------------------------------------------------------
462 * Fix outgoing websocket message compression
464 --------------------------------------------------------------------------------
468 * Handle overflow in max size calculation in `basic_dynamic_body`
469 * Fix unused variable warnings in tests
470 * Fix missing initializer warning in `basic_fields`
471 * Remove unused functions in `impl/static_string.hpp`
472 * Fix unused variable warning in `multi_buffer`
473 * Fix header-only compilation errors in some configurations
474 * Workaround for miscompilation in MSVC 14.2
476 --------------------------------------------------------------------------------
480 * Update documentation
482 --------------------------------------------------------------------------------
486 * Fix deallocate in multi_buffer
488 --------------------------------------------------------------------------------
492 * Deduplicate `websocket::read_size_hint` definition
493 * Fix UB in websocket read tests
494 * Remove redundant includes in websocket
495 * Simplify websocket::detail::prng
496 * Don't over-allocate in http::basic_fields
497 * Fix multi_buffer allocation alignment
498 * Tidy up buffers_range
500 --------------------------------------------------------------------------------
504 * More split compilation in rfc7230.hpp
505 * Qualify calls to `beast::iequals` in basic_parser.ipp
506 * More split compilation in websocket/detail/mask.hpp
507 * Cleanup transitive includes in beast/core/detail/type_traits.hpp
508 * Simplify generation of sec-websocket-key
509 * Move detail::base64 helpers to tests
510 * Remove redundant includes in core
512 --------------------------------------------------------------------------------
516 * Reduce the number of instantiations of filter_token_list
517 * Remove the use of `static_string` from `http::fields`
518 * Add gcc-9 to AzP CI test matrix
519 * Enable split compilation in http::basic_fields
520 * Remove redundant instation of `static_string` in websocket
521 * Remove redundant use of `asio::coroutine` in `flat_stream`
522 * Remove unused includes from `test::stream`
523 * Move `char_buffer` into a separate file
524 * Fix coverage collection in AzP CI
525 * Improve performance of `http::string_to_verb`
526 * Replace uses of `net::coroutine` with `asio::coroutine`
527 * Replace uses of `net::spawn` with `asio::spawn`
528 * Use `beast::read_size` in `detail::read`
530 --------------------------------------------------------------------------------
534 * Fix separate compilation in CI
535 * Fix clang inititalization warning in websocket
536 * Remove redundant use of `yield_to` in parser tests
537 * Add VS 2019 AzP CI matrix item
538 * Clean up typo in chat websocket javascript client
540 --------------------------------------------------------------------------------
544 * Add b2 features for compile-time options used in testing
545 * Remove redundant dependencies in http/server/fast example
546 * Remove experimental/unit_test/thread.hpp
547 * Use `if` statement in basic_stream::transfer_op
548 * Fix flat_buffer copy members
550 --------------------------------------------------------------------------------
554 * Remove uses of the deprecated `buffers` function
555 * Remove uses of deprecated methods in websocket tests
556 * Remove redundant use of `static_string`
557 * Remove redundant template in service_base
558 * Expand CI matrix using Azure Pipelines
559 * Make chat websocket javascript client more user friendly
560 * `allocator_traits::construct` is used for user-defined types
561 * Add 1-element specialization for `buffers_cat`
562 * Fix `buffers_cat` iterator tests
563 * Don't pessimize-move
564 * Use steady_timer type
565 * Preserve operation_aborted on partial message
567 --------------------------------------------------------------------------------
571 * Add idle ping suspend test
572 * Fix moved-from executor in idle ping timeout
574 --------------------------------------------------------------------------------
578 * Fix data race in test::stream::connect
579 * Fix UB in websocket close tests
580 * Fix uninitalized memory use in deflate_stream
581 * Fix gcc-8 warning in websocket::stream
583 --------------------------------------------------------------------------------
587 * Fix async_detect_ssl handler type
588 * member get_executor const-correctness
589 * Fix min/max on MSVC
590 * Relax requirements for vector_body
592 --------------------------------------------------------------------------------
596 * More std::string_view fixes
597 * CI copies to libs/beast
599 --------------------------------------------------------------------------------
603 * Clean up CI scripts
604 * detect_ssl uses bool
606 * Fix compilation on MSVC with std::string_view
607 * Replace static_string in parser
609 --------------------------------------------------------------------------------
613 * Use SaxonHE in reference generation
614 * Cleanup endianness conversions
615 * Set parser status and flags even if body_limit_ has been reached
617 --------------------------------------------------------------------------------
621 * Move friend function template definition
623 --------------------------------------------------------------------------------
627 * Don't use a moved-from handler
629 --------------------------------------------------------------------------------
633 * Fix async_base immediate completion
635 --------------------------------------------------------------------------------
639 * decorator ctor is explicit
641 --------------------------------------------------------------------------------
645 * decorator constructor is constrained
647 --------------------------------------------------------------------------------
651 * Tidy up declval in some traits
652 * Fix websocket keep-alive ping expiration
654 --------------------------------------------------------------------------------
659 * Tidy up file_stdio for VS2015
660 * Fix http::message constructor constraint
662 --------------------------------------------------------------------------------
666 * test::stream has deprecated lowest_layer for ssl
667 * MSVC uses ::fopen_s
668 * Fix http::message constructor constraint
669 * Check defined(BOOST_MSVC)
671 --------------------------------------------------------------------------------
675 * Tidy up a doc code snippet
676 * basic_parser::content_length is stable (API Change)
678 --------------------------------------------------------------------------------
682 * Fix ssl_stream teardown
684 --------------------------------------------------------------------------------
688 * More split compilation in HTTP
690 --------------------------------------------------------------------------------
694 * Refactor Jamfiles to work with release layout
696 --------------------------------------------------------------------------------
700 * cmake: Use static libs to speed up builds
702 --------------------------------------------------------------------------------
706 * root_certificates.hpp: brought in the server certificate
708 --------------------------------------------------------------------------------
712 * Fix self-assignment warning in buffer test
715 --------------------------------------------------------------------------------
719 * Don't link to OpenSSL needlessly (bjam)
720 * HTTPS URLs in README.md
722 --------------------------------------------------------------------------------
726 * Check __ANDROID__ instead
727 * Use secure TLS/SSL versions
729 --------------------------------------------------------------------------------
733 * Fix close_socket for net::basic_socket changes
734 * Fix file_win32_write_op async initiation
735 * Fix basic_stream lowest_layer for ssl
737 --------------------------------------------------------------------------------
741 * Doc section names are stable
742 * Add missing include
743 * Constrain to_static_string to integers
745 --------------------------------------------------------------------------------
749 * Don't use dynamic_buffer_ref
750 * Remove dynamic_buffer_ref
751 * Fix completion handler invocation signatures
753 --------------------------------------------------------------------------------
757 * Rename to buffer_bytes
759 * detect_ssl returns a bool
760 * Fix stable_async_base example
764 * handler_ptr is deprecated
768 * Replace use of `handler_ptr` with `stable_async_base`
769 and `allocate_stable`.
771 --------------------------------------------------------------------------------
775 * Fix UB in decorator:
776 * Sync up convenience headers
777 * The Fields concept is deprecated (API Change)
778 * Fix includes.xsl for newer doxygen
779 * Tidy up quick reference
780 * SSL teardowns are in an associated namespace
782 --------------------------------------------------------------------------------
786 * Fix decorator for certain sizes
788 --------------------------------------------------------------------------------
792 * Support -fno-exceptions
793 * make_strand is in net::
794 * Fix HTTP parser static string calculation
795 * Move parser definitions to .ipp
796 * Appveyor uses msvc-14.0
798 --------------------------------------------------------------------------------
802 * Tidy up an unused function
804 * Examples use flat_buffer
805 * Remove session_alloc (API Change)
809 * Don't use session_alloc
811 --------------------------------------------------------------------------------
815 * Remove extraneous error check in advanced-server-flex
816 * Advanced servers use HTTP parser interfaces for reading
817 * Reusing an HTTP parser returns an error
819 --------------------------------------------------------------------------------
823 * Add test::stream::service
824 * Add websocket service
825 * Pausation abandoning test
826 * Destroy abandoned websocket ops on shutdown
828 --------------------------------------------------------------------------------
832 * stream_base::timeout::suggested is a nested function
834 --------------------------------------------------------------------------------
838 * Rename to async_base, stable_async_base
839 * role_type is in boost/beast/core/role.hpp (API Change)
840 * Cleanup in test::stream internals
841 * Pass references as pointers to async_initiate
845 * Include <boost/beast/core/role.hpp> or
846 define BOOST_BEAST_ALLOW_DEPRECATED=1
848 --------------------------------------------------------------------------------
852 * Documentation and release notes
854 --------------------------------------------------------------------------------
858 * More split definitions in test::stream
859 * Visual Studio 2017 minimum requirement for Windows
860 * Better treatment of SSL short reads
861 * ssl_stream is a public interface
862 * basic_parser is abstract, not CRTP (API Change)
863 * OpenSSL is required for tests and examples
865 --------------------------------------------------------------------------------
869 * detect_ssl, async_detect_ssl are public interfaces
870 * Add OpenSSL installation/setup instructions
871 * Enable split Beast compilation for tests
873 --------------------------------------------------------------------------------
877 * websocket idle pings
878 * RatePolicy documentation
879 * Pass strand to async_accept
880 * Fix file_body_win32
882 * Check BOOST_NO_CXX11_THREAD_LOCAL
885 --------------------------------------------------------------------------------
889 * Refactor websocket::stream operations
890 * Add websocket::stream timeouts
891 * Use suggested timeouts in Websocket examples
893 * Add RatePolicy to basic_stream
894 * Use async_initiate in basic_stream
895 * basic_stream connects are members
896 * Beast supports latest Asio changes (API Change)
897 * WebSocket Decorator is a socket option (API Change)
898 * Overloads of the following functions which accept a Decorator
901 - handshake, handshake_ex
902 - async_accept, async_accept_ex
903 - async_handshake, async_handshake_ex
907 * Code which passes decorator to any `websocket::stream` member
908 function should call `stream::set_option` instead with a newly
909 constructed `stream_base::decorator` object containing the
910 decorator. Alternatively, the macro `BOOST_BEAST_ALLOW_DEPRECATED`
913 * Fix compilation errors required by Asio changes
915 --------------------------------------------------------------------------------
919 * basic_stream uses boost::shared_ptr
920 * Remove bind_back_handler
921 * bind_front_handler works with member functions
922 * Examples use bind_front_handler
923 * Add experimental test/handler.hpp
924 * Rename to async_op_base::invoke_now
925 * Add async_op_base::invoke
926 * Remove CppCon2018 example
927 * Examples use ssl_stream
929 --------------------------------------------------------------------------------
933 * Handler binders use the associated allocator
934 * Add detail::bind_continuation
935 * Rewrite the echo-op example
937 --------------------------------------------------------------------------------
941 * Fix posix_file::close handling of EINTR
942 * basic_stream subsumes stranded_stream:
943 * Use timeouts in HTTP server examples
944 * Use timeouts in HTTP client examples
945 * Use tcp_stream in WebSocket client examples
946 * Use tcp_stream in WebSocket server examples
947 * Use tcp_stream, HTTP timeouts in advanced servers
949 --------------------------------------------------------------------------------
953 * dynamic_buffer_ref tests and tidy
954 * flat_stream tests and tidy
955 * stranded_socket tests and tidy
956 * buffers_front tests
957 * Improved websocket stream documentation
959 --------------------------------------------------------------------------------
963 * close_socket is in stream_traits.hpp
964 * Improvements to test::stream
965 * Add stranded_stream
967 * flat_buffer::clear preserves capacity
968 * multi_buffer::clear preserves capacity
971 --------------------------------------------------------------------------------
975 * Tidy up read implementation
976 * Fix stable_async_op_base javadoc
977 * Better handling of stream timeouts
978 * Add stream_traits.hpp
979 * Add executor_type trait
980 * Fix hexadecimal string conversion table
981 * is_completion_handler, type_traits.hpp are deprecated
982 * Fixes to test::stream::async_read
986 * Stream traits are now in stream_traits.hpp
987 * `is_file` is now in file_base.hpp
988 * is_completion_handler is deprecated
992 * Include stream_traits.hpp as needed
993 * Include file_base.hpp as needed
994 * Use std::is_invocable instead of is_completion_handler
996 --------------------------------------------------------------------------------
1000 * Faster http::string_to_field
1001 * async_echo supports move-only handlers
1002 * test::stream maintains a handler work guard
1003 * Qualify buffer_copy, don't qualify buffer_size
1004 * Add dynamic_buffer_ref
1005 * Refactor quickref.xml
1008 --------------------------------------------------------------------------------
1012 * Add get_lowest_layer free function
1013 * Add lowest_layer_type metafunction
1014 * Add close_socket, beast_close_socket customization
1017 --------------------------------------------------------------------------------
1021 * Send from the strand
1022 * Pass the correct handler in basic_timeout_stream
1026 * lowest_layer is removed
1030 * Remove lowest_layer and lowest_layer_type from user-defined streams.
1031 * Use the get_lowest_layer free function and the lowest_layer_type trait
1034 --------------------------------------------------------------------------------
1038 * Clear error codes idiomatically
1039 * websocket stream uses shared_ptr<impl_type>
1040 * Add websocket-chat-multi example
1042 --------------------------------------------------------------------------------
1047 * Add detail/soft_mutex.hpp
1048 * Add detail/prng.hpp
1050 --------------------------------------------------------------------------------
1054 * Add basic_timeout_stream
1055 * Unit test macros use the global suite
1058 --------------------------------------------------------------------------------
1062 * Update networking refresher doc
1063 * Include error code in call to set_option
1064 * saved_handler is a public interface
1065 * Use new saved_handler in websocket
1066 * session_alloc is thread-safe
1067 * examples use flat_buffer
1068 * parse_until is not static
1069 * Boost.System is header-only
1071 --------------------------------------------------------------------------------
1075 * Use cxxstd instead of cxxflags
1076 * Update coverage badge images
1077 * Tidy up basic_stream_socket docs
1078 * Refactor async_op_base
1080 * async_op_base is a public interface
1081 * Add tests for bind_back_handler
1082 * Add tests for async_op_base
1084 --------------------------------------------------------------------------------
1088 * Decay bound arguments in handler wrapper parameters
1089 * Add bind_back_handler
1090 * Tidy up default-constructed iterators
1091 * Add core errors and conditions
1092 * New basic_stream_socket
1094 --------------------------------------------------------------------------------
1098 * Don't include OpenSSL for core snippets
1099 * Tidy up msvc-14 workaround in multi_buffer
1100 * buffers_cat fixes and coverage
1101 * Refactor buffers_adaptor
1102 * Refactor buffers_range
1103 * Fix and refactor buffers_cat
1104 * Refactor buffers_prefix
1105 * Add const and mutable buffer sequence traits
1106 * Add buffers_iterator_type trait
1107 * Use new buffer traits, remove old unused traits
1108 * Optimize for size on buffers_cat preconditions
1109 * Refactor buffers_suffix
1110 * Tidy up flat_buffer tests
1111 * Fix ostream prepare calculation for low limits
1112 * Tidy up flat_static_buffer tests
1113 * Add more tests for dynamic buffers
1114 * Tidy up multi_buffer
1116 * Refactor static_buffer
1118 * Adjust static_asio lib options in Jamfile
1119 * Add type_traits tests
1120 * Add buffers_range_ref (replaces reference_wrapper parameter)
1124 * buffers_adaptor replaces buffers_adapter (rename)
1125 * make_printable replaces buffers (rename)
1126 * Remove file_mode::append_new
1130 * Replace buffers_adapter.hpp with buffers_adaptor.hpp, and
1131 replace buffers_adapter with buffers_adaptor. Or, define
1132 BOOST_BEAST_ALLOW_DEPRECATED
1134 * Replace call sites to use make_printable instead of buffers,
1135 and also include make_printable.hpp instead of ostream.hpp.
1137 * Replace file_mode::append_new with file_mode::append
1138 or file_mode::append_existing instead of file_mode::append_new
1140 --------------------------------------------------------------------------------
1144 * Workarounds for msvc-14
1145 * Fix Appveyor badge links
1147 --------------------------------------------------------------------------------
1151 * flat_buffer improvements
1152 * multi_buffer improvements
1153 * static_buffer improvements
1154 * flat_static_buffer_improvements
1155 * saved_handler maintains a work_guard (websocket)
1156 * Add buffer_traits.hpp, buffers_type
1157 * Tidy up experimental files
1158 * Tidy up core files
1159 * Fix bind_handler, bind_front_handler
1160 * Improved handler bind wrapper tests
1164 * Files return errc::bad_file_descriptor
1165 * flat_static_buffer::reset is deprecated
1169 * Callers checking for errc::invalid_argument from calls to
1170 file APIs should check for errc::bad_file_descriptor instead.
1172 * Replace calls to flat_static_buffer::reset with
1173 flat_static_buffer::clear
1175 --------------------------------------------------------------------------------
1179 * Improvements to echo-op example
1180 * Crawler example clears the response before each read
1181 * Use a struct instead of a pair in flat_stream (experimental)
1185 * Refactor HTTP operations
1189 * Callers depending on the return value of http::read or
1190 http::async_read overloads should adjust the usage of
1191 the returned value as needed.
1193 --------------------------------------------------------------------------------
1197 * Tidy up calls to placement new
1198 * Remove unused type_traits
1199 * Simplify handler_ptr
1201 --------------------------------------------------------------------------------
1205 * net is a namespace alias for boost::asio
1206 * Simplify multi_buffer and static_buffer sequences
1207 * Documentation work
1209 --------------------------------------------------------------------------------
1213 * http::async_read returns the right byte count on error
1214 * Add net namespace alias
1215 * Don't use-after-free in test
1216 * Tidy up ssl_stream (experimental)
1217 * Dynamic buffer improvements
1218 * Saved handlers are dispatched
1220 --------------------------------------------------------------------------------
1224 * Update ssl_stream signatures for networking changes
1225 * Fix test::stream async_result transformation
1226 * Tidy up test::stream
1227 * Enable explicit instantiation of websocket::stream
1229 --------------------------------------------------------------------------------
1233 * Use mp11::integer_sequence
1234 * Tidy up warnings and deprecated usage
1235 * http::message is not-a boost::empty_value
1237 * Fixes to timeout services (experimental)
1239 --------------------------------------------------------------------------------
1243 * Add bind_front_handler
1244 * Use bind_front_handler
1245 * Simplify some type traits
1246 * Use lean_tuple in buffers_cat
1247 * Use lean_tuple in bind_handler, bind_front_handler
1248 * Use mp11 in detail::variant
1249 * Fix buffers_cat uninitialized warning
1250 * Fix static_string uninitialized warning
1251 * Fix warning in is_ssl_handshake
1253 --------------------------------------------------------------------------------
1257 * Add missing includes to convenience headers
1258 * Unit test framework is experimental
1260 * Rename experimental directory
1261 * Improve compilation of tests for continuous integration
1262 * Fix visibility warnings in test
1264 --------------------------------------------------------------------------------
1268 * Fix broken doc link
1269 * example/cppcon2018 only requires C++11
1271 --------------------------------------------------------------------------------
1275 * Add CppCon2018 chat server example and video
1277 --------------------------------------------------------------------------------
1281 * Remove extraneous strand from example
1282 * Add missing include in http/read.ipp
1283 * Test for gcc warning bug
1284 * Fix a spurious gcc warning
1286 --------------------------------------------------------------------------------
1290 * Add experimental timeout_socket
1291 * Fix warning in file tests
1292 * Fix uninitialized comparison in buffers iterator
1293 * Partial support for BOOST_NO_EXCEPTIONS
1294 * Fix a spurious gcc warning
1295 * Test for gcc warning bug
1296 * Add missing include
1297 * Remove extraneous strand from example
1299 --------------------------------------------------------------------------------
1303 * basic_fields uses intrusive base hooks
1304 * Fix parsing of out-of-bounds hex values
1306 --------------------------------------------------------------------------------
1310 * Remove extraneous function
1312 * Add BOOST_BEAST_USE_STD_STRING_VIEW
1313 * Fix timer on websocket upgrade in examples
1315 --------------------------------------------------------------------------------
1319 * Fix a rare case of failed UTF8 validation
1320 * Verify certificates in client examples
1321 * Use boost::empty_value
1322 * Workaround for http-server-fast and libstdc++
1324 --------------------------------------------------------------------------------
1328 * Silence ubsan false positive
1330 --------------------------------------------------------------------------------
1334 * Fix parse_dec algorithm
1335 * Add parse_dec tests
1337 --------------------------------------------------------------------------------
1341 * Fix http_server_stackless_ssl.cpp example
1343 --------------------------------------------------------------------------------
1347 * Use the exchange() idiom in move constructors
1348 * Most members of std::allocate are deprecated in C++17
1349 * Remove some unused variables
1351 --------------------------------------------------------------------------------
1355 * Use static_cast instead
1357 --------------------------------------------------------------------------------
1361 * Add test for issue #1188
1363 * Check error in example set_option
1365 --------------------------------------------------------------------------------
1369 * Tidy up Quick Reference
1370 * Fix array end calculation in utf8 assertion
1371 * WebSocket masks use secure PRNG by default
1373 --------------------------------------------------------------------------------
1377 * Fix initialization warning
1379 --------------------------------------------------------------------------------
1383 * Fix Fields, FieldsWriter concept docs
1384 * Fix BodyReader constructor requirements doc
1386 --------------------------------------------------------------------------------
1390 * Remove Autobahn testsuite doc note
1391 * Fix buffers_adapter iterator value type
1392 * Fix buffers_adapter max_size
1393 * Fix buffers_prefix iterator decrement
1394 * buffers_adapter improvements
1395 * Add icy_stream Shoutcast stream filter
1397 --------------------------------------------------------------------------------
1401 * Tidy up websocket stream javadocs
1402 * Fix move-only arguments in bind_handler
1403 * Fix http::parser constructor javadoc
1404 * Tidy up test::stream javadocs
1405 * Tidy up composed operation doc
1407 --------------------------------------------------------------------------------
1411 * Add handler_ptr::has_value
1412 * Remove spurious assert
1413 * Fix unused variable warning
1415 --------------------------------------------------------------------------------
1419 * Add flat_stream to experimental
1420 * Add ssl_stream to experimental
1421 * Add test::error to experimental
1422 * Add test::fail_count to experimental
1423 * Add test::stream to experimental
1424 * Use a shared string for example HTTP server doc roots
1425 * Remove deprecated serializer::reader_impl()
1426 * Remove deprecated Body reader and writer ctor signatures
1427 * Add is_mutable_body_writer metafunction
1428 * Add const and non-const overloads for message based http writes
1429 * Use the root certificate which matches the fingerprint
1431 --------------------------------------------------------------------------------
1435 * Use buffers_to_string in tests
1437 * Refactor HTTP write_op implementation
1438 * Use fully qualified namespace in BOOST_BEAST_HANDLER_INIT
1439 * New flat_stream example class
1440 * Use flat_stream in ssl_stream example code
1442 --------------------------------------------------------------------------------
1446 * Use executor_work_guard in composed operations
1447 * Revert verb.ipp change which caused spurious warnings
1448 * Fix race in advanced server examples
1450 --------------------------------------------------------------------------------
1454 * Revert: Tidy up calls to post()
1456 --------------------------------------------------------------------------------
1460 * Use boost::is_convertible as a workaround
1462 --------------------------------------------------------------------------------
1466 * Fix BOOST_NO_CXX11_ALLOCATOR check
1468 --------------------------------------------------------------------------------
1472 * Fix masking on continuation frames
1473 * Add Access-Control-Expose-Headers field constant
1475 --------------------------------------------------------------------------------
1479 * Tidy up calls to post()
1480 * Fix narrowing warnings
1482 --------------------------------------------------------------------------------
1486 * Add asio_handler_invoke overloads for stream algorithms
1487 * Improve websocket::stream::control_callback javadoc
1489 --------------------------------------------------------------------------------
1493 * Don't copy the handler in write_some_op
1494 * Add move-only handler tests
1495 * Fix handler parameter javadocs
1497 --------------------------------------------------------------------------------
1501 * Examples clear the HTTP message before reading
1503 --------------------------------------------------------------------------------
1507 * Fix typo in release notes
1508 * Safe treatment of zero-length string arguments in basic_fields
1509 * Some basic_fields operations now give the strong exception guarantee
1511 --------------------------------------------------------------------------------
1515 * Tidy up end_of_stream javadoc
1516 * Tidy up websocket docs
1517 * Examples set reuse_address(true)
1518 * Advanced servers support clean shutdown via SIGINT or SIGTERM
1519 * DynamicBuffer input areas are not mutable
1520 * Tidy up some documentation
1524 * get_lowest_layer is a type alias
1528 * Replace instances of `typename get_lowest_layer<T>::type`
1529 with `get_lowest_layer<T>`.
1531 --------------------------------------------------------------------------------
1535 * Fix teardown for TIME_WAIT
1536 * Fix big-endian websocket masking
1538 --------------------------------------------------------------------------------
1543 * Add release notes to documentation
1544 * Fix stale link for void-or-deduced
1546 --------------------------------------------------------------------------------
1550 * Fix memory leak in advanced server examples
1551 * Fix soft-mutex assert in websocket stream
1552 * Fix fallthrough warnings
1553 * Tidy up bind_handler doc
1555 --------------------------------------------------------------------------------
1559 * Type check completion handlers
1560 * bind_handler doc update
1561 * bind_handler works with boost placeholders
1563 --------------------------------------------------------------------------------
1567 * Remove BOOST_VERSION checks
1568 * Use make_error_code for setting an error_code from errc
1569 * Use boost::winapi::GetLastError() consistently
1570 * Update README.md for branches
1571 * Avoid string_view::clear
1572 * Fix iterator version of basic_fields::erase
1573 * Fix use-after-move in example request handlers
1574 * Add Bishop Fox interview media
1576 --------------------------------------------------------------------------------
1580 * Refactor detect_ssl_op
1581 * Disable gdb on Travis for Meltdown
1585 * Redistribute the read tests in the translation units
1586 * Refactor error headers
1587 * Add WebSocket error conditions
1591 * Refactor WebSocket errors (API Change):
1595 * Code which explicitly compares error_code values against the
1596 constant `websocket::error::handshake_failed` should compare
1597 against `websocket::condition::handshake_failed` instead.
1599 * Code which explicitly compares error_code values against the
1600 constant `websocket::error::failed` should compare
1601 against `websocket::condition::protocol_violation` instead.
1603 --------------------------------------------------------------------------------
1607 * Sanitizer failures are errors
1608 * Depend on container_hash
1609 * Fix high-ASCII in source file
1613 * Control callback is invoked on the execution context
1614 * Add stream_fwd.hpp
1615 * Remove unnecessary include
1619 * http::parser is not MoveConstructible
1620 * permessage-deflate is a compile-time feature
1622 --------------------------------------------------------------------------------
1631 * serializer::reader_impl is deprecated
1635 * Call serializer::writer_impl instead of reader_impl
1637 --------------------------------------------------------------------------------
1641 * built-in r-value return values can't be assigned
1642 * Tidy up ssl_stream special members
1643 * Fix CMakeLists.txt variable
1644 * Protect calls from macros
1645 * pausation always allocates
1646 * Don't copy completion handlers
1647 * handler_ptr is move-only
1648 * Fix Travis memory utilization
1652 * handler_ptr gives the strong exception guarantee
1656 * Change the constructor signature for state objects
1657 used with handler_ptr to receive a const reference to
1660 --------------------------------------------------------------------------------
1664 * Install codecov on codecov CI targets only
1665 * Update reports for hybrid assessment
1666 * Handle invalid deflate frames
1668 --------------------------------------------------------------------------------
1672 * Don't use boost::string_ref
1673 * Use iterator wrapper in detail::buffers_range
1677 * Tidy up basic_fields exception specifiers
1681 * control callback is copied or moved
1682 * Send idle pings in advanced servers
1684 --------------------------------------------------------------------------------
1689 * Faster ascii_tolower
1690 * Documentation tidying
1691 * Fix typo in examples documentation
1692 * Add detail::aligned_union and tidy up
1693 * Use variant in buffers_cat_view
1697 * Remove unintended public members of handler_ptr
1699 --------------------------------------------------------------------------------
1703 * Rename some detail functions
1704 * Refactor basic_fields allocator internals
1705 * Refactor HTTP async read composed operations
1706 * null_buffers is deprecated
1707 * Version 124 works with Boost 1.65.1 and earlier
1708 * basic_fields does not support fancy pointers
1710 --------------------------------------------------------------------------------
1714 * Update reports for hybrid assessment
1715 * Handle invalid deflate frames
1716 * Install codecov on codecov CI targets only
1718 --------------------------------------------------------------------------------
1722 * Fix websocket permessage-deflate negotiation
1724 --------------------------------------------------------------------------------
1728 * Fix autobahn report link
1730 --------------------------------------------------------------------------------
1734 * Warn about upcoming API changes to certain concepts
1735 * Fix name typo in http write test
1737 --------------------------------------------------------------------------------
1741 * Tidy up some documentation
1743 --------------------------------------------------------------------------------
1747 * Fix some integer warnings in 64-bit builds
1748 * Fix utf8_checker test failures
1749 * Fix signature for async_read_some, and tests
1750 * Tidy up basic_parser
1751 * Some basic_fields special members are protected
1753 --------------------------------------------------------------------------------
1757 * Revisit boost library min/max guidance
1759 --------------------------------------------------------------------------------
1763 * Tidy up some documentation
1765 --------------------------------------------------------------------------------
1769 * ConstBufferSequence mandates pointer equivalence
1770 * Add FieldsWriter constructor requirement
1771 * Tidy up some documented constructor syntax
1773 --------------------------------------------------------------------------------
1777 * Tidy up message doc image
1779 --------------------------------------------------------------------------------
1783 * Fix typo in example server help text
1785 --------------------------------------------------------------------------------
1789 * Add static_buffer_base default constructor definition
1791 --------------------------------------------------------------------------------
1795 * Remove const&& overload of message::body
1797 --------------------------------------------------------------------------------
1801 * Tidy up project folders in CMakeLists.txt
1802 * Rename Cmake variables for clarity
1803 * Add ref-qualified overloads for message::body
1804 * Tidy up FieldsReader doc
1808 * Fields::writer replaces Fields::reader
1809 * BodyReader and BodyWriter names are swapped
1813 * Rename reader to writer for user defined Fields
1814 * Swap the reader and writer names for user defined Body types
1815 * Swap use of is_body_reader and is_body_writer
1817 --------------------------------------------------------------------------------
1821 * basic_fields returns const values
1822 * Set SNI hostname in example SSL clients
1824 --------------------------------------------------------------------------------
1828 * Tidy up fallthrough warning
1829 * Remove cxx11_sfinae_expr build requirement from tests
1831 --------------------------------------------------------------------------------
1835 * Add autobahn test report to doc
1836 * Documentation tidying
1837 * Fix prepare_payload: chunked is HTTP/1.1
1839 --------------------------------------------------------------------------------
1844 * Add explicit-failures-markup.xml
1848 * Add message::need_eof
1849 * Use message::need_eof in example servers
1850 * Use synchronous writes in chunk output example
1854 * Fix utf8 validation for autobahn
1855 * Temporarily disable utf8 validation tests
1856 * Tidy up fast websocket server host names
1860 * Remove serializer::keep_alive
1861 * Remove serializer::chunked
1862 * Add has_content_length_impl to Fields
1863 * Add message::has_content_length
1864 * Rename some basic_parser observers
1868 * Call message::keep_alive instead of serializer::keep_alive
1869 * Call serializer::get::chunked instead of serializer::chunked
1870 * Implement has_content_length_impl for user-defined Fields
1871 * Remove the "is_" prefix from call sites invoking certain basic_parser members
1873 --------------------------------------------------------------------------------
1877 * Add BOOST_BEAST_NO_POSIX_FADVISE
1878 * Version command line option for HTTP client examples
1879 * More Jamfile compiler requirements for tests
1881 --------------------------------------------------------------------------------
1885 * Add CppCon2017 presentation link
1887 * Update stream write documentation for end of stream changes
1888 * Tidy up unused variable warnings
1889 * Don't return end_of_stream on win32 file body writes
1891 * Fix shadowing in session_alloc
1892 * Fix executor type compilation
1893 * Add Travis tests with the default compilers
1894 * Update Boost.WinAPI usage to the new location and namespace.
1895 * Fix buffered_read_stream async_read_some signature
1897 --------------------------------------------------------------------------------
1903 * Update for Net-TS Asio
1907 * Use BOOST_ASIO_HANDLER_TYPE instead of handler_type
1908 * Use BOOST_ASIO_INITFN_RESULT_TYPE instead of async_result
1909 * Use boost::asio::async_completion
1910 * Use boost::asio::is_dynamic_buffer
1911 * Use boost::asio::is_const_buffer_sequence
1912 * Use boost::asio::is_mutable_buffer_sequence
1913 * boost::asio::associated_allocator_t replaces handler_alloc
1915 --------------------------------------------------------------------------------
1919 * Fix for a test matrix compiler
1920 * Fix basic_fields javadoc
1924 * http write returns success on connection close
1928 * Add code to servers to close the connection after successfully
1929 writing a message where `message::keep_alive()` would return `false`.
1931 --------------------------------------------------------------------------------
1935 * Use unit-test subtree
1936 * Fix spurious race in websocket close test
1937 * Check compiler feature in Jamfile
1938 * Clear previous message fields in parser
1940 --------------------------------------------------------------------------------
1944 * Add test for issue 807
1945 * assert on empty buffer in websocket read
1946 * Fix zlib symbol conflicts
1947 * CMake 3.5.1 is required
1948 * config.hpp is not a public header
1949 * Add missing case in error test
1951 --------------------------------------------------------------------------------
1955 * Add test for issue 802
1956 * Fix enum and non-enum in conditional exp. warning
1958 --------------------------------------------------------------------------------
1962 * Fix spurious strand_ in advanced_server_flex
1963 * OpenSSL targets are optional (CMake)
1965 --------------------------------------------------------------------------------
1969 * Tidy up doc badge links
1971 --------------------------------------------------------------------------------
1975 * file_win32 opens for read-only in shared mode
1976 * Remove unused strands in server examples
1977 * Update build instructions
1978 * Doc root is at index.html
1982 * Fix writing header into std::ostream
1984 --------------------------------------------------------------------------------
1988 * Add buffers_to_string
1992 * buffers_suffix replaces consuming_buffers
1993 * buffers_prefix replaces buffer_prefix
1994 * buffers_prefix_view replaces buffer_prefix_view
1995 * buffers_front replaces buffer_front
1996 * buffers_cat replaces buffer_cat
1997 * buffers_cat_view replaces buffer_cat_view
1998 * Remove buffers_suffix::get
2002 * Use buffers_suffix instead of consuming_buffers
2003 * Use buffers_prefix instead of buffer_prefix
2004 * Use buffers_prefix_view instead of buffer_prefix_view
2005 * Use buffers_front instead of buffer_front
2006 * Use buffers_cat instead of buffer_cat
2007 * Use buffers_cat_view instead of buffer_cat_view
2008 * Avoid calling buffers_suffix::get
2010 --------------------------------------------------------------------------------
2016 * message::body is a member function
2017 * message::version is a member function
2021 * Call member function message::body instead of accessing
2022 the data member at call sites.
2024 * Call member function message::version instead of accessing
2025 the version member at call sites.
2027 --------------------------------------------------------------------------------
2031 * Update README.md master doc link
2033 --------------------------------------------------------------------------------
2039 --------------------------------------------------------------------------------
2043 * Fix handler signature in async_read_header
2044 * Remove field_range copy constructor
2046 --------------------------------------------------------------------------------
2050 * Update websocket notes
2054 * WebSocket writes return the bytes transferred
2056 * HTTP reads and writes return bytes transferred
2060 * Modify websocket write completion handlers to receive
2061 the extra std::size_t bytes_transferred parameter.
2063 * Modify HTTP read and/or write completion handlers to
2064 receive the extra std::size_t bytes_transferred parameter.
2066 --------------------------------------------------------------------------------
2072 * Fix utf8 check split code point at buffer end
2073 * Refactor stream operations and tests plus coverage
2074 * Suspended ops special members
2076 --------------------------------------------------------------------------------
2080 * Refactor stream open state variable
2081 * Refactor websocket stream members
2082 * Refactor websocket stream: fixes and tests
2083 * Add test::stream::lowest_layer
2084 * Fix invalid iterator in test reporter
2086 --------------------------------------------------------------------------------
2090 * refactor test::stream
2094 * Fix async_read_some handler signature
2095 * websocket close fixes and tests
2096 * websocket handshake uses coroutine
2097 * websocket ping tests
2098 * Fix websocket close_op resume state
2099 * websocket write tests
2100 * split up websocket tests
2101 * websocket read tests
2105 * websocket accept refactoring
2109 * Do not call websocket accept overloads which take
2110 both a message and a buffer sequence, as it is
2111 illegal per rfc6455.
2113 --------------------------------------------------------------------------------
2117 * Fix argument parsing in HTTP examples
2118 * Don't use async_write_msg in examples
2120 --------------------------------------------------------------------------------
2128 * Fix done state for WebSocket reads
2129 * Fix utf8 check for compressed frames
2130 * Rename frame and header buffer types
2132 --------------------------------------------------------------------------------
2136 * Dynamic buffer input areas are mutable
2137 * Add flat_static_buffer::reset
2141 * Fix for basic_parser::skip(true) and docs
2145 * websocket test improvements
2146 * Remove obsolete write_op
2152 * Refactor read_op + fail_op
2153 * Websocket close will automatically drain
2154 * Autobahn|Testsuite fixes
2155 * Tidy up utf8_checker and tests
2157 --------------------------------------------------------------------------------
2161 * Fix compile error in websocket snippet
2162 * Tidy up Jamfile and tests
2164 --------------------------------------------------------------------------------
2168 * Remove unused include
2169 * Use #error in config.hpp
2170 * Only set -std=c++11 on Travis
2171 * Only set /permissive- on Appveyor
2172 * Tidy up some test warnings
2173 * tools/ renamed from build/
2177 * Fix pausation::save
2179 --------------------------------------------------------------------------------
2183 * Boost test matrix fixes
2184 * Tidy up allocator usage
2185 * Example HTTP server fixes
2187 --------------------------------------------------------------------------------
2191 * Section headings in examples
2193 --------------------------------------------------------------------------------
2197 * Refactor all examples
2199 --------------------------------------------------------------------------------
2203 * Fix doc convenience includes
2205 * Remove unused test header
2206 * Rename test macros
2207 * Reorder define test macro params
2208 * vcxproj workaround for include symlinks
2209 * Add variadic min/max
2213 * Remove obsolete frame tests
2214 * Refactor fail/clode code
2215 * Call do_fail from read_some
2216 * eof on accept returns error::closed
2217 * Fix stream::read_size_hint calculation
2222 * Calls to stream::close and stream::async_close will
2223 automatically perform the required read operations
2225 * drain_buffer is removed
2227 * role_type replaces teardown_tag
2231 * Remove calling code which drains the connection after
2232 calling stream::close or stream::async_close
2234 * Replace code which uses drain_buffer. For websocket::stream,
2235 it is no longer necessary to manually drain the connection
2238 * Modify signatures of teardown and async_teardown to use
2239 role_type instead of teardown_tag
2241 * Change calls to teardown and async_teardown to pass the
2242 correct role_type, client or server, depending on context.
2244 --------------------------------------------------------------------------------
2248 * Log the value of LIB_DIR for doc builds (debug)
2249 * Use correct handler signature in fail_op
2252 --------------------------------------------------------------------------------
2256 * basic_fields::key_compare is noexcept
2257 * Fix bench-zlib cmake
2258 * Use unique names Jam projects
2259 * Trim utf8 checker test
2261 --------------------------------------------------------------------------------
2267 --------------------------------------------------------------------------------
2271 * Move bench/ to test/
2272 * Move extras/ to test/
2273 * Use <valgrind> property
2274 * Rename wsload compile target
2276 * Update boostorg links
2279 * Less compression on websocket test
2281 --------------------------------------------------------------------------------
2285 * Tidy up Travis build scripts
2286 * Move scripts to build/
2287 * Fix race in test::pipe
2288 * close on test::pipe teardown
2290 * Tidy up static_buffer braced init
2292 * Add valgrind variant, fix false positives
2294 --------------------------------------------------------------------------------
2298 * Use off-site Quick Start link temporarily
2300 --------------------------------------------------------------------------------
2304 * Unset BOOST_COROUTINES_NO_DEPRECATION_WARNING
2306 --------------------------------------------------------------------------------
2310 * Fix typo in test/CMakeLists.txt
2311 * basic_fields::value_type is not copyable
2312 * Update repository links in source comments
2313 * Ignore Content-Length in some cases
2314 * Tidy up doc snippet paths
2315 * Use off-site doc link
2317 --------------------------------------------------------------------------------
2321 * Adjust redirect html
2322 * Don't build pre-C++11
2323 * source.dox is path-independent
2324 * Tidy up namespace qualifiers
2325 * Tidy up MSVC CMakeLists.txt
2326 * Optimize buffered_read_stream
2327 * constexpr in derived buffers
2328 * Set BOOST_ASIO_NO_DEPRECATED
2329 * Use Asio array optimization in static_buffer_base
2330 * Rename wstest source file
2331 * Use fopen_s on Windows
2332 * Fix Appveyor script
2333 * Update project metadata
2334 * Move benchmarks to bench/
2336 * Build stand-alone doc
2337 * Update doc copyrights
2338 * Refactor test build scripts
2342 * Tidy up websocket javadocs
2343 * Refactor accept, handshake ops
2344 * Use read buffer instead of buffered stream
2348 * control frame callbacks are non-const references
2352 * Modify calls to set the control frame callback, to
2353 pass non-const reference instances, and manage the
2354 lifetime of the instance.
2356 --------------------------------------------------------------------------------
2360 * Fix websocket read of zero length message
2361 * Fix typo in equal_range
2362 * Output to integrated documentation
2364 --------------------------------------------------------------------------------
2368 * Fix CONTRIBUTING.md links
2370 --------------------------------------------------------------------------------
2374 * Update doc links in README.md
2375 * Refactor tests Jamfile
2376 * Don't use program_options
2380 * Fix uninitialized frame done
2382 --------------------------------------------------------------------------------
2386 * Update appveyor for Boost branch
2387 * Rename to BEAST_EXPECT
2388 * variant fixes and tests
2389 * Update README, add CONTRIBUTING.md and CODE_OF_CONDUCT.md
2391 --------------------------------------------------------------------------------
2396 * Remove use of lexical_cast
2397 * Use custom variant
2399 * Add local-travis.sh
2401 * Update CMakeLists.txt for boost
2402 * Update documentation for boost
2404 * Remove spurious declaration
2406 * Normalize doc build scripts
2407 * Use configured doxygen and xsltproc
2408 * Fix Deferred Body Type Example Documentation
2409 * Add library metadata
2413 * websocket read returns the number of bytes inserted
2417 * Change the signature of completion handlers used with
2418 websocket::stream::async_read to void(error_code, std::size_t)
2420 --------------------------------------------------------------------------------
2425 * Tidy up test warning
2427 --------------------------------------------------------------------------------
2431 * Tidy up buffer_front
2432 * static_buffer::consume improvement
2433 * multi_buffer is type-check friendly
2434 * bind_handler allows placeholders
2435 * Add consuming_buffers::get
2439 * WebSocket read optimization
2443 * websocket::stream::read_buffer_size is removed
2447 * Remove calls websocket::stream::read_buffer_size
2448 * Use read_some and write_some instead of read_frame and write_frame
2450 --------------------------------------------------------------------------------
2454 * Add flat_static_buffer::mutable_data
2456 * Add wstest compression option
2457 * Turn some flat_static_buffer_tests on
2458 * Documentation work
2459 * read_some, async_read_some return bytes used
2460 * Fix private timer::clock_type
2464 * Add wstest compression option
2465 * Fix buffer lifetime in websocket write
2473 * Callers who depend on static_buffer returning sequences of
2474 exactly length one should switch to flat_static_buffer.
2476 --------------------------------------------------------------------------------
2480 * Documentation tidying
2481 * is_invocable works with move-only types
2482 * Use std::function and reference wrapper
2483 * Add session_alloc to example/common
2484 * Silence spurious warning
2488 * Fix extraneous argument in async_write_header
2493 * Add rd_close_ to websocket stream state
2494 * stream uses flat_buffer
2495 * accept requires a message
2496 * Add wstest benchmark tool
2500 * Rename to flat_static_buffer and flat_static_buffer_base
2504 * Rename static_buffer to flat_static_buffer_base
2505 * Rename static_buffer_n to flat_static_buffer
2507 --------------------------------------------------------------------------------
2511 * Pass string_view by value
2512 * better is_final on empty_base_optimization
2513 * Suppress incorrect GCC warning
2514 * multi_buffer ctor is explicit
2515 * File is not copy-constructible
2519 * Refactor basic_parser, chunk parsing:
2523 * Adjust signatures for required members of user-defined
2524 subclasses of basic_parser
2526 * Use the new basic_parser chunk callbacks for accessing
2527 chunk extensions and chunk bodies.
2529 --------------------------------------------------------------------------------
2534 * Add basic_dynamic_body.hpp
2535 * Shrink buffer_prefix_view
2536 * Remove unused file_path
2537 * Add basic_file_body.hpp
2538 * buffers_ref is Assignable
2542 * Shrink chunk header buffer sequence size
2546 * Refactor chunked-encoding serialization
2550 * Remove references to ChunkDecorators. Use the new chunk-encoding
2551 buffer sequences to manually produce a chunked payload body in
2552 the case where control over the chunk-extensions and/or trailers
2555 --------------------------------------------------------------------------------
2559 * Remove spurious fallthrough guidance
2561 --------------------------------------------------------------------------------
2566 * Documentation work
2567 * Use make_unique_noinit
2568 * Fix warning in zlib
2569 * Header file tidying
2570 * Tidy up FieldsReader doc
2571 * Add Boost.Locale utf8 benchmark comparison
2572 * Tidy up dstream for existing Boost versions
2573 * Tidy up file_posix unused variable
2574 * Fix warning in root ca declaration
2578 * Tidy up basic_string_body
2580 * span, string, vector bodies are public
2581 * Fix spurious uninitialized warning
2582 * fields temp string uses allocator
2586 * Add message::keep_alive()
2587 * Add message::chunked() and message::content_length()
2588 * Remove string_view_body
2592 * Change user defined implementations of Fields and
2593 FieldsReader to meet the new requirements.
2595 * Use span_body<char> instead of string_view_body
2597 --------------------------------------------------------------------------------
2601 * file_posix works without large file support
2603 --------------------------------------------------------------------------------
2607 * Always go through write_some
2609 * BodyReader may construct from a non-const message
2610 * Add serializer::get
2611 * Add serializer::chunked
2612 * Serializer members are not const
2613 * serializing file_body is not const
2614 * Add file_body_win32
2615 * Fix parse illegal characters in obs-fold
2616 * Disable SSE4.2 optimizations
2620 * Rename to serializer::keep_alive
2621 * BodyReader, BodyWriter use two-phase init
2625 * Use serializer::keep_alive instead of serializer::close and
2626 take the logical NOT of the return value.
2628 * Modify instances of user-defined BodyReader and BodyWriter
2629 types to perform two-phase initialization, as per the
2630 updated documented type requirements.
2632 --------------------------------------------------------------------------------
2636 * Use file_body for valid requests, string_body otherwise.
2637 * Construct buffer_prefix_view in-place
2638 * Shrink serializer buffers using buffers_ref
2639 * Tidy up BEAST_NO_BIG_VARIANTS
2640 * Shrink serializer buffers using buffers_ref
2641 * Add serializer::limit
2643 * Using SSE4.2 intrinsics in basic_parser if available
2645 --------------------------------------------------------------------------------
2649 * Add file_stdio and File concept
2652 * Remove common/file_body.hpp
2654 * Fix Beast include directories for cmake targets
2655 * remove redundant flush() from example
2657 --------------------------------------------------------------------------------
2662 * Verify certificates in SSL clients
2664 * Initialize local variable in basic_parser
2669 * basic_parser optimizations
2670 * Add basic_parser tests
2674 * Refactor header and message constructors
2675 * serializer::next replaces serializer::get
2679 * Evaluate each message constructor call site and
2680 adjust the constructor argument list as needed.
2682 * Use serializer::next instead of serializer::get at call sites
2684 --------------------------------------------------------------------------------
2690 * Tidy up set payload in http-server-fast
2691 * Refine Body::size specification
2692 * Newly constructed responses have a 200 OK result
2693 * Refactor file_body for best practices
2694 * Add http-server-threaded example
2695 * Documentation tidying
2696 * Various improvements to http_server_fast.cpp
2700 * Add websocket-server-async example
2702 --------------------------------------------------------------------------------
2706 * Fix extra ; warning
2707 * Documentation revision
2708 * Fix spurious on_chunk invocation
2709 * Call prepare_payload in HTTP example
2710 * Check trailers in test
2711 * Fix buffer overflow handling for string_body and mutable_body
2712 * Concept check in basic_dynamic_body
2713 * Tidy up http_sync_port error check
2714 * Tidy up Jamroot /permissive-
2718 * Fine tune websocket op asserts
2719 * Refactor websocket composed ops
2720 * Allow close, ping, and write to happen concurrently
2721 * Fix race in websocket read op
2722 * Fix websocket write op
2723 * Add cmake options for examples and tests
2727 * Return `std::size_t` from `Body::writer::put`
2731 * Return the number of bytes actually transferred from the
2732 input buffers in user defined `Body::writer::put` functions.
2734 --------------------------------------------------------------------------------
2738 * Serialize in one step when possible
2739 * Add basic_parser header and body limits
2740 * Add parser::on_header to set a callback
2741 * Fix BEAST_FALLTHROUGH
2742 * Fix HEAD response in file_service
2746 * Rename to message::base
2747 * basic_parser default limits are now 1MB/8MB
2751 * Change calls to message::header_part() with message::base()
2753 * Call body_limit and/or header_limit as needed to adjust the
2754 limits to suitable values if the defaults are insufficient.
2756 --------------------------------------------------------------------------------
2760 * basic_parser optimizations
2761 * Use BEAST_FALLTHROUGH to silence warnings
2762 * Add /permissive- to msvc toolchain
2764 --------------------------------------------------------------------------------
2768 * Split common tests to a new project
2769 * Small speed up in fields comparisons
2770 * Adjust buffer size in fast server
2771 * Use string_ref in older Boost versions
2772 * Optimize field lookups
2773 * Add const_body, mutable_body to examples
2774 * Link statically on cmake MSVC
2778 * Change BodyReader, BodyWriter requirements
2779 * Remove BodyReader::is_deferred
2780 * http::error::bad_target replaces bad_path
2784 * Change user defined instances of BodyReader and BodyWriter
2785 to meet the new requirements.
2787 * Replace references to http::error::bad_path with http::error::bad_target
2789 --------------------------------------------------------------------------------
2793 * Fix doc example link
2794 * Add http-server-small example
2795 * Merge stream_base to stream and tidy
2796 * Use boost::string_view
2797 * Rename to http-server-fast
2798 * Appveyor use Boost 1.64.0
2799 * Group common example headers
2803 * control_callback replaces ping_callback
2807 * Change calls to websocket::stream::ping_callback to use
2808 websocket::stream::control_callback
2810 * Change user defined ping callbacks to have the new
2811 signature and adjust the callback definition appropriately.
2813 --------------------------------------------------------------------------------
2817 * string_param optimizations
2818 * Add serializer request/response aliases
2819 * Make consuming_buffers smaller
2820 * Fix costly potential value-init in parser
2821 * Fix unused parameter warning
2822 * Handle bad_alloc in parser
2823 * Tidy up message piecewise ctors
2824 * Add header aliases
2825 * basic_fields optimizations
2826 * Add http-server example
2827 * Squelch spurious warning on gcc
2829 --------------------------------------------------------------------------------
2833 * Enable narrowing warning on msvc cmake
2834 * Fix integer types in deflate_stream::bi_reverse
2835 * Fix narrowing in static_ostream
2836 * Fix narrowing in ostream
2837 * Fix narrowing in inflate_stream
2838 * Fix narrowing in deflate_stream
2839 * Fix integer warnings
2840 * Enable unused variable warning on msvc cmake
2842 --------------------------------------------------------------------------------
2846 * Simplify buffered_read_stream composed op
2847 * Simplify ssl teardown composed op
2848 * Simplify websocket write_op
2849 * Exemplars are compiled code
2850 * Better User-Agent in examples
2851 * async_write requires a non-const message
2853 * Add link_directories to cmake
2857 * Remove make_serializer
2861 * Replace calls to make_serializer with variable declarations
2863 --------------------------------------------------------------------------------
2867 * Use std::to_string instead of lexical_cast
2868 * Don't use cached Boost
2869 * Put num_jobs back up on Travis
2870 * Only build and run tests in variant=coverage
2871 * Move benchmarks to a separate project
2872 * Only run the tests under ubasan
2873 * Tidy up CMakeLists.txt
2875 * Control running with valgrind explicitly
2877 --------------------------------------------------------------------------------
2881 * Remove libssl-dev from a Travis matrix item
2882 * Increase detail::static_ostream coverage
2883 * Add server-framework tests
2884 * Doc fixes and tidy
2885 * Tidy up namespaces in examples
2886 * Clear the error faster
2887 * Avoid explicit operator bool for error
2888 * Add http::is_fields trait
2889 * Squelch harmless not_connected errors
2890 * Put slow tests back for coverage builds
2894 * parser requires basic_fields
2895 * Refine FieldsReader concept
2896 * message::prepare_payload replaces message::prepare
2900 * Callers using `parser` with Fields types other than basic_fields
2901 will need to create their own subclass of basic_parser to work
2902 with their custom fields type.
2904 * Implement chunked() and keep_alive() for user defined FieldsReader types.
2906 * Change calls to msg.prepare to msg.prepare_payload. For messages
2907 with a user-defined Fields, provide the function prepare_payload_impl
2908 in the fields type according to the Fields requirements.
2910 --------------------------------------------------------------------------------
2914 * Remove Spirit dependency
2915 * Use generic_cateogry for errno
2916 * Reorganize SSL examples
2917 * Tidy up some integer conversion warnings
2918 * Add message::header_part()
2919 * Tidy up names in error categories
2920 * Flush the output stream in the example
2921 * Clean close in Secure WebSocket client
2922 * Add server-framework SSL HTTP and WebSocket ports
2923 * Fix shadowing warnings
2924 * Tidy up http-crawl example
2925 * Add multi_port to server-framework
2926 * Tidy up resolver calls
2928 * Don't run slow tests on certain targets
2932 * header::version is unsigned
2933 * status-codes is unsigned
2935 --------------------------------------------------------------------------------
2939 * String comparisons are public interfaces
2940 * Fix response message type in async websocket accept
2941 * New server-framework, full featured server example
2943 --------------------------------------------------------------------------------
2947 * Integrated Beast INTERFACE (cmake)
2948 * Fix base64 alphabet
2949 * Remove obsolete doc/README.md
2953 * Change Body::size signature (API Change):
2957 * For any user-defined models of Body, change the function signature
2958 to accept `value_type const&` and modify the function definition
2961 --------------------------------------------------------------------------------
2965 * Fix unaligned reads in utf8-checker
2966 * Qualify size_t in message template
2967 * Reorganize examples
2968 * Specification for http read
2969 * Avoid `std::string` in websocket
2970 * Fix basic_fields insert ordering
2971 * basic_fields::set optimization
2972 * basic_parser::put doc
2973 * Use static string in basic_fields::reader
2974 * Remove redundant code
2975 * Fix parsing chunk size with leading zeroes
2976 * Better message formal parameter names
2980 * `basic_fields::set` renamed from `basic_fields::replace`
2984 * Rename calls to `basic_fields::replace` to `basic_fields::set`
2986 --------------------------------------------------------------------------------
2990 * Fix message.hpp javadocs
2991 * Fix warning in basic_parser.cpp
2992 * Integrate docca for documentation and tidy
2994 --------------------------------------------------------------------------------
2998 * Add provisional IANA header field names
2999 * Add string_view_body
3000 * Call on_chunk when the extension is empty
3001 * HTTP/1.1 is the default version
3002 * Try harder to find Boost (cmake)
3004 * More basic_parser tests
3005 * Add an INTERFACE cmake target
3006 * Convert buffer in range loops
3008 --------------------------------------------------------------------------------
3012 * Don't allocate memory to handle obs-fold
3013 * Avoid a parser allocation using non-flat buffer
3014 * read_size replaces read_size_helper
3016 --------------------------------------------------------------------------------
3020 * static_buffer coverage
3021 * flat_buffer coverage
3022 * multi_buffer coverage
3023 * consuming_buffers members and coverage
3024 * basic_fields members and coverage
3026 * Retain ownership when reading using a message
3027 * Fix incorrect use of [[fallthrough]]
3031 * basic_fields refactor
3033 --------------------------------------------------------------------------------
3037 * Fix basic_parser::maybe_flatten
3038 * Fix read_size_helper usage
3040 --------------------------------------------------------------------------------
3044 * flat_buffer is an AllocatorAwareContainer
3045 * Add drain_buffer class
3049 * `auto_fragment` is a member of `stream`
3050 * `binary`, `text` are members of `stream`
3051 * read_buffer_size is a member of `stream`
3052 * read_message_max is a member of `stream`
3053 * `write_buffer_size` is a member of `stream`
3054 * `ping_callback` is a member of stream
3055 * Remove `opcode` from `read`, `async_read`
3056 * `read_frame` returns `bool` fin
3057 * `opcode` is private
3058 * finish(error_code&) is a BodyReader requirement
3062 * Change call sites which use `auto_fragment` with `set_option`
3063 to call `stream::auto_fragment` instead.
3065 * Change call sites which use message_type with `set_option`
3066 to call `stream::binary` or `stream::text` instead.
3068 * Change call sites which use `read_buffer_size` with `set_option` to
3069 call `stream::read_buffer_size` instead.
3071 * Change call sites which use `read_message_max` with `set_option` to
3072 call `stream::read_message_max` instead.
3074 * Change call sites which use `write_buffer_size` with `set_option` to
3075 call `stream::write_buffer_size` instead.
3077 * Change call sites which use `ping_callback1 with `set_option` to
3078 call `stream::ping_callback` instead.
3080 * Remove the `opcode` reference parameter from calls to synchronous
3081 and asynchronous read functions, replace the logic with calls to
3082 `stream::got_binary` and `stream::got_text` instead.
3084 * Remove the `frame_info` parameter from all read frame call sites
3086 * Check the return value 'fin' for calls to `read_frame`
3088 * Change ReadHandlers passed to `async_read_frame` to have
3089 the signature `void(error_code, bool fin)`, use the `bool`
3090 to indicate if the frame is the last frame.
3092 * Remove all occurrences of the `opcode` enum at call sites
3094 --------------------------------------------------------------------------------
3098 * Fix operator<< for header
3100 * Fix file_body::get() not setting the more flag correctly
3101 * Use BOOST_FALLTHROUGH
3102 * Use BOOST_STRINGIZE
3103 * DynamicBuffer benchmarks
3104 * Add construct, destroy to handler_alloc
3105 * Fix infinite loop in basic_parser
3109 * Tune up static_buffer
3110 * multi_buffer implementation change
3114 * Call sites passing a number to multi_buffer's constructor
3115 will need to be adjusted, see the corresponding commit message.
3117 --------------------------------------------------------------------------------
3121 * parser is constructible from other body types
3122 * Add field enumeration
3123 * Use allocator more in basic_fields
3124 * Fix basic_fields allocator awareness
3125 * Use field in basic_fields and call sites
3126 * Use field in basic_parser
3127 * Tidy up basic_fields, header, and field concepts
3128 * Fields concept work
3129 * Body documentation work
3130 * Add missing handler_alloc nested types
3131 * Fix chunk delimiter parsing
3132 * Fix test::pipe read_size
3133 * Fix chunk header parsing
3137 * Remove header_parser
3138 * Add verb to on_request for parsers
3140 * Protect basic_fields special members
3141 * Remove message connection settings
3142 * Remove message free functions
3143 * Remove obsolete serializer allocator
3144 * http read_some, async_read_some don't return bytes
3146 --------------------------------------------------------------------------------
3150 * Use <iosfwd> instead of <ostream>
3154 * Add HEAD request example
3158 * Refactor method and verb
3159 * Canonicalize string_view parameter types
3160 * Tidy up empty_body writer error
3161 * Refactor header status, reason, and target
3163 --------------------------------------------------------------------------------
3167 * Make buffer_prefix_view public
3168 * Remove detail::sync_ostream
3169 * Tidy up core type traits
3173 * Tidy up chunk decorator
3174 * Rename to buffer_cat_view
3175 * Consolidate parsers to parser.hpp
3178 --------------------------------------------------------------------------------
3182 * Disable operator<< for buffer_body
3183 * buffer_size overload for basic_multi_buffer::const_buffers_type
3184 * Fix undefined behavior in pausation
3185 * Fix leak in basic_flat_buffer
3189 * Refactor treatment of request-method
3190 * Refactor treatment of status code and obsolete reason
3191 * Refactor HTTP serialization and parsing
3193 --------------------------------------------------------------------------------
3198 * Documentation work
3202 * Remove HTTP header aliases
3203 * Refactor HTTP serialization
3204 * Refactor type traits
3206 --------------------------------------------------------------------------------
3210 * Workaround for boost::asio::basic_streambuf type check
3211 * Fix message doc image
3212 * Better test::enable_yield_to
3213 * Fix header::reason
3214 * Documentation work
3215 * buffer_view skips empty buffer sequences
3216 * Disable reverse_iterator buffer_view test
3218 --------------------------------------------------------------------------------
3222 * Use BOOST_THROW_EXCEPTION
3223 * Tidy up read_size_helper and dynamic buffers
3224 * Require Boost 1.58.0 or later
3225 * Tidy up and make get_lowest_layer public
3226 * Use BOOST_STATIC_ASSERT
3227 * Fix async return values in docs
3228 * Fix README websocket example
3229 * Add buffers_adapter regression test
3230 * Tidy up is_dynamic_buffer traits test
3231 * Make buffers_adapter meet requirements
3233 --------------------------------------------------------------------------------
3237 * Require Boost 1.64.0
3238 * Fix strict aliasing warnings in buffers_view
3239 * Tidy up buffer_prefix overloads and test
3240 * Add write limit to test::string_ostream
3241 * Additional constructors for consuming_buffers
3243 --------------------------------------------------------------------------------
3248 * Add formal review notes
3249 * Make buffers_view a public interface
3251 --------------------------------------------------------------------------------
3255 * Trim Appveyor matrix rows
3256 * Concept revision and documentation
3257 * Remove coveralls integration
3258 * Tidy up formal parameter names
3262 * Tidy up websocket::close_code enum and constructors
3266 * Return http::error::end_of_stream on HTTP read eof
3267 * Remove placeholders
3268 * Rename prepare_buffer(s) to buffer_prefix
3269 * Remove handler helpers, tidy up hook invocations
3271 --------------------------------------------------------------------------------
3275 * Add to_static_string
3276 * Consolidate get_lowest_layer in type_traits.hpp
3277 * Fix basic_streambuf movable trait
3278 * Tidy up .travis.yml
3280 --------------------------------------------------------------------------------
3284 Beast versions are now identified by a single integer which
3285 is incremented on each merge. The macro BEAST_VERSION
3286 identifies the version number, currently at 39. A version
3287 setting commit will always be at the tip of the master
3288 and develop branches.
3290 * Use beast::string_view alias
3291 * Fixed braced-init error with older gcc
3295 * Tidy up basic_parser javadocs
3299 * Add websocket async echo ssl server test:
3300 * Fix eof error on ssl::stream shutdown
3304 * Refactor http::header contents
3305 * New ostream() returns dynamic buffer output stream
3306 * New buffers() replaces to_string()
3307 * Rename to multi_buffer, basic_multi_buffer
3308 * Rename to flat_buffer, basic_flat_buffer
3309 * Rename to static_buffer, static_buffer_n
3310 * Rename to buffered_read_stream
3311 * Harmonize concepts and identifiers with net-ts
3312 * Tidy up HTTP reason_string
3314 --------------------------------------------------------------------------------
3318 * Refactor static_string
3320 * Use static_string for WebSocket handshakes
3321 * Simplify get_lowest_layer test
3322 * Add test_allocator to extras/test
3323 * More flat_streambuf tests
3324 * WebSocket doc work
3325 * Prevent basic_fields operator[] assignment
3329 * Refactor WebSocket error codes
3330 * Remove websocket::keep_alive option
3332 --------------------------------------------------------------------------------
3336 * CMake hide command lines in .vcxproj Output windows"
3337 * Rename to detail::is_invocable
3338 * Rename project to http-bench
3339 * Fix flat_streambuf
3340 * Add ub sanitizer blacklist
3341 * Add -funsigned-char to asan build target
3342 * Fix narrowing warning in table constants
3346 * Add is_upgrade() free function
3347 * Document websocket::stream thread safety
3348 * Rename to websocket::detail::pausation
3352 * Provide websocket::stream accept() overloads
3353 * Refactor websocket decorators
3354 * Move everything in basic_fields.hpp to fields.hpp
3355 * Rename to http::dynamic_body, consolidate header
3357 --------------------------------------------------------------------------------
3363 --------------------------------------------------------------------------------
3367 * Add Appveyor build scripts and badge
3368 * Tidy up MSVC CMake configuration
3369 * Make close_code a proper enum
3370 * Add flat_streambuf
3371 * Rename to BEAST_DOXYGEN
3372 * Update .gitignore for VS2017
3373 * Fix README.md CMake instructions
3377 * New HTTP interfaces
3378 * Remove http::empty_body
3380 --------------------------------------------------------------------------------
3384 * Fix and tidy up CMake build scripts
3386 --------------------------------------------------------------------------------
3390 * Require Visual Studio 2015 Update 3 or later
3394 * Use fwrite return value in file_body
3398 * Set internal state correctly when writing frames
3399 * Add decorator unit test
3400 * Add write_frames unit test
3402 --------------------------------------------------------------------------------
3406 * Add io_service completion invariants test
3407 * Update CMake scripts for finding packages
3411 * Remove http Writer suspend and resume feature
3413 --------------------------------------------------------------------------------
3417 * Tidy up build settings
3418 * Add missing dynabuf_readstream member
3422 * Move the handler, don't copy it
3424 --------------------------------------------------------------------------------
3430 * Fix race in pings during reads
3431 * Fix race in close frames during reads
3432 * Fix race when write suspends
3433 * Allow concurrent websocket async ping and writes
3435 --------------------------------------------------------------------------------
3439 * Fix compilation error in non-template class
3440 * Document type-pun in buffer_cat
3441 * Correctly check ostream modifier (/extras)
3445 * Fix Body requirements doc
3446 * Fix illegal HTTP characters accepted as hex zero
3447 * Fix Writer return value documentation
3451 * Fix race in writes during reads
3454 --------------------------------------------------------------------------------
3458 * Split out and rename test stream classes
3459 * Restyle async result constructions
3460 * Fix HTTP split parse edge case
3462 --------------------------------------------------------------------------------
3466 * Tidy up tests and docs
3467 * Add documentation building instructions
3471 * Invoke callback on pings and pongs
3472 * Move basic_streambuf to streambuf.hpp
3474 --------------------------------------------------------------------------------
3478 * Tidy up warnings and tests
3480 --------------------------------------------------------------------------------
3484 * Fixes for WebSocket echo server
3485 * Fix 32-bit arm7 warnings
3486 * Remove unnecessary include
3487 * WebSocket server examples and test tidying
3488 * Fix deflate setup bug
3492 * Better handler_ptr
3494 --------------------------------------------------------------------------------
3498 * bjam use clang on MACOSX
3499 * Simplify Travis package install specification
3500 * Add optional yield_to arguments
3501 * Make decorator copyable
3502 * Add WebSocket permessage-deflate extension support
3504 --------------------------------------------------------------------------------
3508 * Tune websocket echo server for performance
3509 * Add file and line number to thrown exceptions
3510 * Better logging in async echo server
3511 * Add copy special members
3512 * Fix message constructor and special members
3513 * Travis CI improvements
3515 --------------------------------------------------------------------------------
3519 * Fix broken Intellisense
3520 * Implement the Asio deallocation-before-invocation guarantee
3521 * Add handler helpers
3522 * Avoid copies in handler_alloc
3523 * Update README.md example programs
3524 * Fix websocket stream read documentation
3525 * Disable Boost.Coroutine deprecation warning
3526 * Update documentation examples
3528 --------------------------------------------------------------------------------
3532 * Remove extraneous includes
3534 --------------------------------------------------------------------------------
3544 * Rename HTTP identifiers
3546 --------------------------------------------------------------------------------
3550 * Boost library min/max guidance
3551 * Improvements to code coverage
3552 * Use boost::lexical_cast instead of std::to_string
3553 * Fix prepare_buffers value_type
3554 * Fix consuming_buffers value_type
3559 * Make chunk_encode public
3560 * Add write, async_write, operator<< for message_headers
3561 * Add read, async_read for message_headers
3562 * Fix with_body example
3566 * Optimize utf8 validation
3567 * Optimize mask operations
3571 * Refactor message and message_headers declarations
3572 * prepared_buffers is private
3573 * consume_buffers is removed
3575 --------------------------------------------------------------------------------
3579 * Increase optimization settings for MSVC builds
3583 * Check invariants in parse_op:
3584 * Clean up message docs
3588 * Write buffer option does not change capacity
3589 * Close connection during async_read on close frame
3590 * Add pong, async pong to stream
3594 * Meet DynamicBuffer requirements for static_streambuf
3595 * Fix write_frame masking and auto-fragment handling
3599 * unit_test::suite fixes:
3600 - New overload of fail() specifies file and line
3601 - BEAST_EXPECTS only evaluates the reason string on a failure
3604 --------------------------------------------------------------------------------
3608 * Change implicit to default value in example
3609 * Tidy up some declarations
3610 * Fix basic_streambuf::capacity
3611 * Add basic_streambuf::alloc_size
3612 * Parser callbacks may not throw
3613 * Fix Reader concept doc typo
3614 * Add is_Reader trait
3615 * Tidy up basic_headers for documentation
3616 * Tidy up documentation
3617 * Add basic_parser_v1::reset
3618 * Fix handling of body_what::pause in basic_parser_v1
3619 * Add headers_parser
3620 * Engaged invokable is destructible
3621 * Improve websocket example in README.md
3622 * Refactor read_size_helper
3626 * Added init() to Reader requirements
3627 * Reader must be nothrow constructible
3628 * Reader is now constructed right before reading the body
3629 - The message passed on construction is filled in
3630 * Rework HTTP concepts:
3631 - Writer uses write instead of operator()
3632 - Refactor traits to use void_t
3633 - Remove is_ReadableBody, is_WritableBody
3634 - Add has_reader, has_writer, is_Reader, is_Writer
3635 - More friendly compile errors on failed concept checks
3636 * basic_parser_v1 requires all callbacks present
3637 * on_headers parser callback now returns void
3638 * on_body_what is a new required parser callback returning body_what
3640 --------------------------------------------------------------------------------
3644 * Make value optional in param-list
3645 * Frame processing routines are member functions
3646 * Fix on_headers called twice from basic_parser_v1
3647 * Constrain parser_v1 constructor
3648 * Improve first line serialization
3649 * Add pause option to on_headers interface
3650 * Refactor base_parser_v1 callback traits:
3651 * Refine Parser concept
3652 * Relax ForwardIterator requirements in FieldSequence
3653 * Fix websocket failure testing
3654 * Refine Writer concept and fix exemplar in documentation
3658 * Rename mask_buffer_size to write_buffer_size
3659 * Make auto_fragment a boolean option
3661 The message class hierarchy is refactored (breaking change):
3663 * One message class now models both HTTP/1 and HTTP/2 messages
3664 * message_v1, request_v1, response_v1 removed
3665 * New classes basic_request and basic_response model
3666 messages without the body.
3668 Error resolution: Callers should use message, request,
3669 and response instead of message_v1, request_v1, and
3670 response_v1 respectively.
3672 --------------------------------------------------------------------------------
3676 * rfc7230 section 3.3.2 compliance
3678 * Add Secure WebSocket example
3679 * Fix message_v1 constructor
3680 * Tidy up DynamicBuffer requirements
3681 * Tidy up error types and headers
3682 * Fix handling empty HTTP headers in parser_v1
3684 --------------------------------------------------------------------------------
3688 * Add missing rebind to handler_alloc
3689 * Fix error handling in http server examples
3690 * Fix CMake scripts for MinGW
3692 * Better WebSocket decorator
3693 * Update and tidy documentation
3695 --------------------------------------------------------------------------------
3699 * dstream improvements
3700 * Remove bin and bin64 directories
3701 * Tidy up .vcxproj file groupings
3703 --------------------------------------------------------------------------------
3707 * Use -p to print suites from unit test main.
3708 * BEAST_EXPECTS to add a reason string to test failures
3709 * Fix unit test runner to output all case names
3710 * Update README for build requirements
3711 * Rename to CHANGELOG.md
3713 --------------------------------------------------------------------------------
3717 * Set URI in generated WebSocket Upgrade requests
3718 * Rename echo server class and file names
3719 * Rename to DynamicBuffer in some code and documentation
3720 * Fix integer warnings in Windows builds
3721 * Add 32 and 64 bit Windows build support
3722 * Update README for build instructions and more
3723 * Add repository and documentation banners
3725 --------------------------------------------------------------------------------
3729 * Fix compilation warnings
3730 * Add websocketpp comparison to HTML documentation
3732 --------------------------------------------------------------------------------
3736 * Fix CMakeLists.txt
3738 --------------------------------------------------------------------------------
3742 * Fix include in example code
3743 * Fix basic_headers rfc2616 Section 4.2 compliance
3745 --------------------------------------------------------------------------------
3749 * Fix prepare by calling init. prepare() can throw depending on the
3750 implementation of Writer. Publicly provided beast::http writers never throw.
3751 * Fixes to example HTTP server
3752 * Fully qualify ambiguous calls to read and parse
3753 * Remove deprecated http::stream wrapper
3754 * Example HTTP server now calculates the MIME-type
3755 * Fixes and documentation for teardown and use with SSL:
3756 * Add example code to rfc7230 javadocs
3757 * Remove extraneous header file <beast/http/status.hpp>
3758 * Add skip_body parser option
3760 --------------------------------------------------------------------------------
3764 * Use SFINAE on return values
3765 * Use beast::error_code instead of nested types
3766 * Tidy up use of GENERATING_DOCS
3767 * Remove obsolete RFC2616 functions
3768 * Add message swap members and free functions
3769 * Add HTTP field value parser containers: ext_list, param_list, token_list
3770 * Fixes for some corner cases in basic_parser_v1
3771 * Configurable limits on headers and body sizes in basic_parser_v1
3775 * ci_equal is moved to beast::http namespace, in rfc7230.hpp
3777 * "DynamicBuffer","dynabuf" renamed from "Streambuf", "streambuf". See:
3778 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4478.html#requirements.dynamic_buffers
3780 * basic_parser_v1 adheres to rfc7230 as strictly as possible
3782 --------------------------------------------------------------------------------