diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-09-08 08:57:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-08 08:57:47 +0200 |
commit | 1f6b2c4d119960c1e0f5bf7791e2c4aa3b4fafb0 (patch) | |
tree | 32fdb7a3c8685fae0aedbbadb34267b93dc6eb79 /lib/pure/asyncnet.nim | |
parent | 4cb4961f7ca137af216024e1cb7a9754ac62b4ee (diff) | |
parent | cc2a8409e170cb96a3141c9ad8a9077c0c98174f (diff) | |
download | Nim-1f6b2c4d119960c1e0f5bf7791e2c4aa3b4fafb0.tar.gz |
Merge pull request #4733 from cheatfate/asyncssl_and_tests
async: small ssl fix and updated tests
Diffstat (limited to 'lib/pure/asyncnet.nim')
-rw-r--r-- | lib/pure/asyncnet.nim | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/pure/asyncnet.nim b/lib/pure/asyncnet.nim index dbf895d18..334f95baa 100644 --- a/lib/pure/asyncnet.nim +++ b/lib/pure/asyncnet.nim @@ -165,9 +165,14 @@ when defineSsl: await sendPendingSslData(socket, flags) of SSL_ERROR_WANT_READ: var data = await recv(socket.fd.AsyncFD, BufferSize, flags) - let ret = bioWrite(socket.bioIn, addr data[0], data.len.cint) - if ret < 0: - raiseSSLError() + let length = len(data) + if length > 0: + let ret = bioWrite(socket.bioIn, addr data[0], data.len.cint) + if ret < 0: + raiseSSLError() + elif length == 0: + # connection not properly closed by remote side or connection dropped + SSL_set_shutdown(socket.sslHandle, SSL_RECEIVED_SHUTDOWN) else: raiseSSLError("Cannot appease SSL.") |