
Hello all. It looks like all openssl_operation handlers are synchronized on io_service allowing only one connection to be processed at the a time. As I understand this orginated from the time when libopenSSL didn't support multi-threaded applications, but it slows down everything a lot. Adding locking function, and getting rid of strand_->wrap in lines 320, 385 in file boost/asio/ssl/detail/openssl_operation.hpp allows SSL connections to be used in multiple threads simultaneously solving the problem. Or do I miss something? I've attached simple line-based echo server which demonstrates the problem: openssl s_client -connect localhost:10001 #x 2 telnet localhost 10000 #x 2 After sending something in each connection TCP and one SSL work in parallel, second SSL waits with receiving until first one finishes it's write. After patching all connections work in parallel. -- Pozdrawiam Michał 'michoo' Madziar