changeset 8580:07971f870879 quic

QUIC: added debug message with final packet processing status.
author Vladimir Homutov <vl@nginx.com>
date Fri, 02 Oct 2020 16:20:41 +0300
parents d57cfdebe301
children ec04dbb77fb7
files src/event/ngx_event_quic.c src/event/ngx_event_quic_transport.h
diffstat 2 files changed, 30 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c
+++ b/src/event/ngx_event_quic.c
@@ -46,6 +46,11 @@
 #define NGX_QUIC_MIN_SR_PACKET   43 /* 5 random + 16 srt + 22 padding */
 #define NGX_QUIC_MAX_SR_PACKET   1200
 
+#define ngx_quic_level_name(lvl)                                              \
+    (lvl == ssl_encryption_application) ? "application"                       \
+        : (lvl == ssl_encryption_initial) ? "initial"                         \
+            : (lvl == ssl_encryption_handshake) ? "handshake" : "early_data"
+
 
 typedef struct {
     ngx_rbtree_t                      tree;
@@ -1625,6 +1630,25 @@ ngx_quic_input(ngx_connection_t *c, ngx_
 
         rc = ngx_quic_process_packet(c, conf, &pkt);
 
+#if (NGX_DEBUG)
+        if (pkt.parsed) {
+            ngx_quic_connection_t  *qc;
+
+            qc = c->quic;
+
+            ngx_log_debug8(NGX_LOG_DEBUG_EVENT, c->log, 0,
+                           "quic pkt done %s decr:%d pn:%L pe:%ui rc:%i"
+                           " closing:%d err:%d %s",
+                           ngx_quic_level_name(pkt.level), pkt.decrypted,
+                           pkt.pn, pkt.error, rc, (qc && qc->closing) ? 1 : 0,
+                           qc ? qc->error : 0,
+                           (qc && qc->error_reason) ? qc->error_reason : "");
+        } else {
+            ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
+                           "quic pkt done parse failed rc:%i", rc);
+        }
+#endif
+
         if (rc == NGX_ERROR) {
             return NGX_ERROR;
         }
@@ -1687,6 +1711,8 @@ ngx_quic_process_packet(ngx_connection_t
         return rc;
     }
 
+    pkt->parsed = 1;
+
     c->log->action = "processing quic packet";
 
     qc = c->quic;
@@ -1838,6 +1864,8 @@ ngx_quic_process_packet(ngx_connection_t
         return rc;
     }
 
+    pkt->decrypted = 1;
+
     if (c->ssl == NULL) {
         if (ngx_quic_init_connection(c) != NGX_OK) {
             return NGX_ERROR;
--- a/src/event/ngx_event_quic_transport.h
+++ b/src/event/ngx_event_quic_transport.h
@@ -311,6 +311,8 @@ typedef struct {
     unsigned                                    need_ack:1;
     unsigned                                    key_phase:1;
     unsigned                                    key_update:1;
+    unsigned                                    parsed:1;
+    unsigned                                    decrypted:1;
 } ngx_quic_header_t;