On Mon, Mar 19, 2018 at 6:28 AM, Daniel James via Boost-users
Boost release 1.67.0 beta 1 is now available at:
A user discovered a defect in Beast. A recent change switched calls to boost::asio::post from the 2-argument version to the 1-argument version in order to simplify code and remove a redundant function call. Unfortunately this change was not safe, as it exposed a problem where Beast composed operations do not strictly adhere to the requirements of Networking.TS. Specifically that Beast composed operations should maintain the existence of an executor_work_guard for the I/O executor (not to be confused with the completion handler's associated executor). The switch to the 1-argument version of post() was made recently, and a user discovered that this broke the functionality of using asynchronous stream algorithms with futures. The simplest fix is to revert the offending commit, which I have done here and would like to merge to master for 1.67: https://github.com/boostorg/beast/pull/1075 A more robust fix, which changes all composed operation implementations to maintain the lifetime of an executor_work_guard attached to the I/O context executor will be forthcoming after the 1.67 release. Reverting the commit is less risky than performing the robust fix for the release, and also note that Asio's own composed operations need this treatment as well. The Boost.Asio author was extremely helpful in identifying the problem and explaining the new requirements for composed operations. Thanks