On Fri, May 03, 2019 at 09:34:14AM +0000, John Unsworth wrote: > Testing changed code. For the record, though I think you realise this, *both* the SSL_read() or SSL_write() and the following SSL_get_error() need to be protected as a unit by the *same* instance of the locked mutex. It would not be enough to lock these separately. acquire_lock(); if (reading) ret = SSL_read(ssl, ...); else ret = SSL_write(ssl, ...); if (ret <= 0) err = SSL_get_error(ssl, ret); release_lock(); /* Handle EOF and errors */ -- Viktor.