diff options
author | Leorize <leorize+oss@disroot.org> | 2020-06-03 15:11:10 -0500 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2020-06-06 21:11:53 +0200 |
commit | 6cb94b5da6ac409915cc0ca3f50c50214edee0ef (patch) | |
tree | ec13cf8be68c3b9dc543aac813a978948a7c0e0e /lib/pure/asyncnet.nim | |
parent | f243f9aeb5c5ef6f59efadbee81feb918a20fae8 (diff) | |
download | Nim-6cb94b5da6ac409915cc0ca3f50c50214edee0ef.tar.gz |
asyncnet, net: clear openssl error queue before performing I/O
Per SSL_get_error(3): The current thread's error queue must be empty before the TLS/SSL I/O operation is attempted, or SSL_get_error() will not work reliably. There has been records of not clearing the error queue causing weird SSL errors when there shouldn't be any, see: https://github.com/openssl/openssl/issues/11889
Diffstat (limited to 'lib/pure/asyncnet.nim')
-rw-r--r-- | lib/pure/asyncnet.nim | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/pure/asyncnet.nim b/lib/pure/asyncnet.nim index 8df839c14..bd9cd4312 100644 --- a/lib/pure/asyncnet.nim +++ b/lib/pure/asyncnet.nim @@ -718,6 +718,7 @@ proc close*(socket: AsyncSocket) = # established, see: # https://github.com/openssl/openssl/issues/710#issuecomment-253897666 if SSL_in_init(socket.sslHandle) == 0: + ErrClearError() SSL_shutdown(socket.sslHandle) else: 0 |