comparison src/event/ngx_event_quic.c @ 7766:23a2b5e7acc8 quic

Improved SSL_do_handshake() error handling in QUIC. It can either return a recoverable SSL_ERROR_WANT_READ or fatal errors.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 01 Apr 2020 13:27:42 +0300
parents 4ad7d4272cd5
children c9fbe9508e1f
comparison
equal deleted inserted replaced
7765:4ad7d4272cd5 7766:23a2b5e7acc8
506 if (n == -1) { 506 if (n == -1) {
507 sslerr = SSL_get_error(ssl_conn, n); 507 sslerr = SSL_get_error(ssl_conn, n);
508 508
509 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_get_error: %d", 509 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_get_error: %d",
510 sslerr); 510 sslerr);
511
512 if (sslerr != SSL_ERROR_WANT_READ) {
513 ngx_ssl_error(NGX_LOG_ERR, c->log, 0, "SSL_do_handshake() failed");
514 return NGX_ERROR;
515 }
511 } 516 }
512 517
513 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, 518 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
514 "SSL_quic_read_level: %d, SSL_quic_write_level: %d", 519 "SSL_quic_read_level: %d, SSL_quic_write_level: %d",
515 (int) SSL_quic_read_level(ssl_conn), 520 (int) SSL_quic_read_level(ssl_conn),
1048 sslerr = SSL_get_error(ssl_conn, n); 1053 sslerr = SSL_get_error(ssl_conn, n);
1049 1054
1050 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_get_error: %d", 1055 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_get_error: %d",
1051 sslerr); 1056 sslerr);
1052 1057
1053 if (sslerr == SSL_ERROR_SSL) { 1058 if (sslerr != SSL_ERROR_WANT_READ) {
1054 ngx_ssl_error(NGX_LOG_ERR, c->log, 0, "SSL_do_handshake() failed"); 1059 ngx_ssl_error(NGX_LOG_ERR, c->log, 0, "SSL_do_handshake() failed");
1060 return NGX_ERROR;
1055 } 1061 }
1056 1062
1057 } else if (n == 1) { 1063 } else if (n == 1) {
1058 c->quic->state = NGX_QUIC_ST_APPLICATION; 1064 c->quic->state = NGX_QUIC_ST_APPLICATION;
1059 1065