id summary reporter owner description type status milestone component version severity resolution keywords cc 3958 ssl::stream async_read_some and async_write_some handlers never run concurrently L McGuinness chris_kohlhoff "Handlers passed to ssl::stream::async_read_some and ssl::stream::async_write_some are always invoked in the context of a strand. This strand is a member of openssl_stream_service, which is typically a process-wide instance. The effect of this is that a time-consuming async_read_some handler on one ssl::stream instance can block all other async_read_some and async_write_some handlers on other instances of ssl::stream. The code that does this is in boost/asio/ssl/detail/openssl_operation.hpp. Line 319 performs strand::wrap on the callback to openssl_operation::async_write_handler. At lines 367 and 373, async_write_handler invokes the user's handler function (passed to ssl::stream::async_write_some). This runs in the context of strand_. The strand instance in this case is always openssl_stream_service::strand_, as can be seen in asio/ssl/detail/openssl_stream_service.hpp, line 395. The situation for async_read_handler is similar." Bugs closed To Be Determined asio Boost 1.42.0 Problem fixed openssl ssl strand concurrency asio samjmill@…