Mercurial > hg > nginx
comparison src/event/ngx_event_quic.c @ 8300: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
8299:4ad7d4272cd5 | 8300: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 |