]> git.kaiwu.me - nginx.git/commitdiff
Improved SSL_do_handshake() error handling in QUIC.
authorSergey Kandaurov <pluknet@nginx.com>
Wed, 1 Apr 2020 10:27:42 +0000 (13:27 +0300)
committerSergey Kandaurov <pluknet@nginx.com>
Wed, 1 Apr 2020 10:27:42 +0000 (13:27 +0300)
It can either return a recoverable SSL_ERROR_WANT_READ or fatal errors.

src/event/ngx_event_quic.c

index 7231d64ad02942b8788e07b4627afe29910aa5e5..ae85b31d01eaeb227f2fa8abcd4ec3b592d81f3c 100644 (file)
@@ -508,6 +508,11 @@ ngx_quic_init_connection(ngx_connection_t *c)
 
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_get_error: %d",
                        sslerr);
+
+        if (sslerr != SSL_ERROR_WANT_READ) {
+            ngx_ssl_error(NGX_LOG_ERR, c->log, 0, "SSL_do_handshake() failed");
+            return NGX_ERROR;
+        }
     }
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
@@ -1050,8 +1055,9 @@ ngx_quic_handle_crypto_frame(ngx_connection_t *c, ngx_quic_header_t *pkt,
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_get_error: %d",
                        sslerr);
 
-        if (sslerr == SSL_ERROR_SSL) {
+        if (sslerr != SSL_ERROR_WANT_READ) {
             ngx_ssl_error(NGX_LOG_ERR, c->log, 0, "SSL_do_handshake() failed");
+            return NGX_ERROR;
         }
 
     } else if (n == 1) {