Mercurial > nginx
changeset 9407:3e0912eeeeb7
QUIC: reset qc->error to zero again.
Following the previous change that removed posting a close event
in OpenSSL compat layer, now ngx_quic_close_connection() is always
called on error path with either NGX_ERROR or qc->error set.
This allows to remove a special value -1 served as a missing error,
which simplifies the code. Partially reverts d3fb12d77.
Also, this improves handling of the draining connection state, which
consists of posting a close event with NGX_OK and no qc->error set,
where it was previously converted to NGX_QUIC_ERR_INTERNAL_ERROR.
Notably, this is rather a cosmetic fix, because drained connections
do not send any packets including CONNECTION_CLOSE, and qc->error
is not otherwise used.
| author | Sergey Kandaurov <pluknet@nginx.com> |
|---|---|
| date | Wed, 14 May 2025 23:33:00 +0400 |
| parents | 928f63626afe |
| children | eb8af216d0a2 |
| files | src/event/quic/ngx_event_quic.c src/event/quic/ngx_event_quic_ssl.c |
| diffstat | 2 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/quic/ngx_event_quic.c Tue May 13 20:12:10 2025 +0400 +++ b/src/event/quic/ngx_event_quic.c Wed May 14 23:33:00 2025 +0400 @@ -72,7 +72,7 @@ if (qc) { - if (qc->error != (ngx_uint_t) -1) { + if (qc->error) { p = ngx_slprintf(p, last, "%s", qc->error_app ? " app" : ""); p = ngx_slprintf(p, last, " error:%ui", qc->error); @@ -520,7 +520,7 @@ * to terminate the connection immediately. */ - if (qc->error == (ngx_uint_t) -1) { + if (qc->error == 0 && rc == NGX_ERROR) { qc->error = NGX_QUIC_ERR_INTERNAL_ERROR; qc->error_app = 0; } @@ -961,7 +961,7 @@ qc = ngx_quic_get_connection(c); - qc->error = (ngx_uint_t) -1; + qc->error = 0; qc->error_reason = 0; c->log->action = "decrypting packet";
--- a/src/event/quic/ngx_event_quic_ssl.c Tue May 13 20:12:10 2025 +0400 +++ b/src/event/quic/ngx_event_quic_ssl.c Wed May 14 23:33:00 2025 +0400 @@ -415,7 +415,7 @@ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_do_handshake: %d", n); - if (qc->error != (ngx_uint_t) -1) { + if (qc->error) { return NGX_ERROR; }
