From ee11f4ae53fe178e0800d5c6b762f61a666bd2d9 Mon Sep 17 00:00:00 2001 From: ritt Date: Mon, 10 Aug 2020 08:45:39 +0200 Subject: [PATCH] Added SSL read error fix thanks to H.S.S. --- src/elogd.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/elogd.c b/src/elogd.c index abb67805..03b2ca7a 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -30031,9 +30031,15 @@ void server_loop(void) { status = select(FD_SETSIZE, (void *) &readfds, NULL, NULL, (void *) &timeout); if (FD_ISSET(_sock, &readfds)) { #ifdef HAVE_SSL - if (_ssl_flag) + if (_ssl_flag) { i = SSL_read(_ssl_con, net_buffer + len, net_buffer_size - len); - else + if (i <= 0) { + int ssl_error = SSL_get_error(_ssl_con, i); + if (ssl_error == SSL_ERROR_WANT_READ || + ssl_error == SSL_ERROR_WANT_WRITE) + continue; // continue reading if SSL layer wants more data + } + } else #endif i = recv(_sock, net_buffer + len, net_buffer_size - len, 0);