changeset 8614:3d79c08bb0f1 quic

QUIC: changed ACK frame debugging. Previously ACK ranges were logged as a gap/range sequence. Now these values are expanded to packet number ranges for easier reading.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 28 Oct 2020 09:15:04 +0000
parents 867c189f875d
children 27e305834078
files src/event/ngx_event_quic.c
diffstat 1 files changed, 21 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c
+++ b/src/event/ngx_event_quic.c
@@ -373,7 +373,7 @@ ngx_quic_log_frame(ngx_log_t *log, ngx_q
 {
     u_char      *p, *last, *pos, *end;
     ssize_t      n;
-    uint64_t     gap, range;
+    uint64_t     gap, range, largest, smallest;
     ngx_uint_t   i;
     u_char       buf[NGX_MAX_ERROR_STR];
 
@@ -394,14 +394,22 @@ ngx_quic_log_frame(ngx_log_t *log, ngx_q
     case NGX_QUIC_FT_ACK:
     case NGX_QUIC_FT_ACK_ECN:
 
-        p = ngx_slprintf(p, last,
-                        "ACK largest:%uL fr:%uL nranges:%ui delay:%uL",
-                         f->u.ack.largest, f->u.ack.first_range,
+        p = ngx_slprintf(p, last, "ACK n:%ui delay:%uL ",
                          f->u.ack.range_count, f->u.ack.delay);
 
         pos = f->u.ack.ranges_start;
         end = f->u.ack.ranges_end;
 
+        largest = f->u.ack.largest;
+        smallest = f->u.ack.largest - f->u.ack.first_range;
+
+        if (largest == smallest) {
+            p = ngx_slprintf(p, last, "%uL", largest);
+
+        } else {
+            p = ngx_slprintf(p, last, "%uL-%uL", largest, smallest);
+        }
+
         for (i = 0; i < f->u.ack.range_count; i++) {
             n = ngx_quic_parse_ack_range(log, pos, end, &gap, &range);
             if (n == NGX_ERROR) {
@@ -410,7 +418,15 @@ ngx_quic_log_frame(ngx_log_t *log, ngx_q
 
             pos += n;
 
-            p = ngx_slprintf(p, last, " %uL,%uL", gap, range);
+            largest = smallest - gap - 2;
+            smallest = largest - range;
+
+            if (largest == smallest) {
+                p = ngx_slprintf(p, last, " %uL", largest);
+
+            } else {
+                p = ngx_slprintf(p, last, " %uL-%uL", largest, smallest);
+            }
         }
 
         if (f->type == NGX_QUIC_FT_ACK_ECN) {
@@ -3107,9 +3123,6 @@ ngx_quic_handle_ack_frame_range(ngx_conn
     ngx_quic_frame_t       *f;
     ngx_quic_connection_t  *qc;
 
-    ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
-                   "quic handle ack range min:%uL max:%uL", min, max);
-
     qc = c->quic;
 
     *send_time = NGX_TIMER_INFINITE;