From d1f4c39dcd13b8f22ac1d104e78e6d7d3b513dc9 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Mon, 30 Sep 2013 22:44:37 +0100 Subject: [PATCH] and do the same when read --- src/stream/read.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/stream/read.c b/src/stream/read.c index 9b697f5..2db19ae 100644 --- a/src/stream/read.c +++ b/src/stream/read.c @@ -68,8 +68,25 @@ streamRead(Stream this, void * buf, size_t count) if (0 >= done) { switch (SSL_get_error((this->handle).ssl, done)) { + case SSL_ERROR_SYSCALL: + { + switch (errno) { + case EINTR: + case ENOBUFS: + case ENOMEM: + done = 0; + break; + case (EAGAIN|EWOULDBLOCK): + done = -1; + break; + default: + done = -2; + break; + } + } + break; + case SSL_ERROR_SSL: - case SSL_ERROR_SYSCALL: { unsigned long err; @@ -83,6 +100,7 @@ streamRead(Stream this, void * buf, size_t count) // DROP THROUGH case SSL_ERROR_ZERO_RETURN: + default: done = -2; break; }