On Wed, May 20, 2020 at 09:40:35PM +0100, Matt Caswell wrote: > On 20/05/2020 21:36, Viktor Dukhovni wrote: > > My take is that this is a sufficiently nasty problem to warrant some > > changes in SSL_read(), SSL_write, SSL_accept(), ... to internally > > memoize the error status before returning, in a manner that does not > > depend on the prior state of the error stack, and that then > > SSL_get_error() must look only at the given (SSL *) handle and > > not at the error stack. > > We actually have always cleared the error stack on entering the libssl > state machine. It appears we don't do that on IO functions that don't > enter the state machine (such as SSL_read()/SSL_write()).
Glad to hear that at least handshakes are less prone to unexpected issues of that sort. I'd be interested to hear your thoughts (perhaps a separate thread) on what to do about SSL_read() and SSL_write(). In the mean-time, if Clauss is trying to complete a handshake, rather than move data, his issue is then likely something different? -- Viktor.