How about this as this catches all 3 while conditions:
+++ src/event/ngx_event_openssl.c
@@ -2318,
c->ssl->no_wait_shutdown = 1;
c->ssl->no_send_shutdown = 1;
if (sslerr == SSL_ERROR_ZERO_RETURN || ERR_peek_error() == 0) {
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0,
"peer shutdown SSL cleanly");
return NGX_DONE;
}
+ /* https://forum.nginx.org/read.php?2,287377 */
+ /* https://github.com/openssl/openssl/issues/11381 */
+#ifdef SSL_R_UNEXPECTED_EOF_WHILE_READING
+ if (sslerr == SSL_ERROR_SSL && ERR_GET_REASON(ERR_peek_error())
+ == SSL_R_UNEXPECTED_EOF_WHILE_READING) {
+ ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0,
+ "ssl3_read_n:unexpected eof while reading");
+ return NGX_DONE;
+ }
+#endif
+
ngx_ssl_connection_error(c, sslerr, err, "SSL_read() failed");
---
nginx for Windows http://nginx-win.ecsds.eu/