Mercurial > hg > nginx
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 Tue Oct 27 13:24:00 2020 +0000 +++ b/src/event/ngx_event_quic.c Wed Oct 28 09:15:04 2020 +0000 @@ -373,7 +373,7 @@ { 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 @@ 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 @@ 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_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;