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;
     }