Mercurial > hg > nginx
comparison src/event/ngx_event_quic.c @ 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 |
comparison
equal
deleted
inserted
replaced
8613:867c189f875d | 8614:3d79c08bb0f1 |
---|---|
371 static void | 371 static void |
372 ngx_quic_log_frame(ngx_log_t *log, ngx_quic_frame_t *f, ngx_uint_t tx) | 372 ngx_quic_log_frame(ngx_log_t *log, ngx_quic_frame_t *f, ngx_uint_t tx) |
373 { | 373 { |
374 u_char *p, *last, *pos, *end; | 374 u_char *p, *last, *pos, *end; |
375 ssize_t n; | 375 ssize_t n; |
376 uint64_t gap, range; | 376 uint64_t gap, range, largest, smallest; |
377 ngx_uint_t i; | 377 ngx_uint_t i; |
378 u_char buf[NGX_MAX_ERROR_STR]; | 378 u_char buf[NGX_MAX_ERROR_STR]; |
379 | 379 |
380 p = buf; | 380 p = buf; |
381 last = buf + sizeof(buf); | 381 last = buf + sizeof(buf); |
392 break; | 392 break; |
393 | 393 |
394 case NGX_QUIC_FT_ACK: | 394 case NGX_QUIC_FT_ACK: |
395 case NGX_QUIC_FT_ACK_ECN: | 395 case NGX_QUIC_FT_ACK_ECN: |
396 | 396 |
397 p = ngx_slprintf(p, last, | 397 p = ngx_slprintf(p, last, "ACK n:%ui delay:%uL ", |
398 "ACK largest:%uL fr:%uL nranges:%ui delay:%uL", | |
399 f->u.ack.largest, f->u.ack.first_range, | |
400 f->u.ack.range_count, f->u.ack.delay); | 398 f->u.ack.range_count, f->u.ack.delay); |
401 | 399 |
402 pos = f->u.ack.ranges_start; | 400 pos = f->u.ack.ranges_start; |
403 end = f->u.ack.ranges_end; | 401 end = f->u.ack.ranges_end; |
402 | |
403 largest = f->u.ack.largest; | |
404 smallest = f->u.ack.largest - f->u.ack.first_range; | |
405 | |
406 if (largest == smallest) { | |
407 p = ngx_slprintf(p, last, "%uL", largest); | |
408 | |
409 } else { | |
410 p = ngx_slprintf(p, last, "%uL-%uL", largest, smallest); | |
411 } | |
404 | 412 |
405 for (i = 0; i < f->u.ack.range_count; i++) { | 413 for (i = 0; i < f->u.ack.range_count; i++) { |
406 n = ngx_quic_parse_ack_range(log, pos, end, &gap, &range); | 414 n = ngx_quic_parse_ack_range(log, pos, end, &gap, &range); |
407 if (n == NGX_ERROR) { | 415 if (n == NGX_ERROR) { |
408 break; | 416 break; |
409 } | 417 } |
410 | 418 |
411 pos += n; | 419 pos += n; |
412 | 420 |
413 p = ngx_slprintf(p, last, " %uL,%uL", gap, range); | 421 largest = smallest - gap - 2; |
422 smallest = largest - range; | |
423 | |
424 if (largest == smallest) { | |
425 p = ngx_slprintf(p, last, " %uL", largest); | |
426 | |
427 } else { | |
428 p = ngx_slprintf(p, last, " %uL-%uL", largest, smallest); | |
429 } | |
414 } | 430 } |
415 | 431 |
416 if (f->type == NGX_QUIC_FT_ACK_ECN) { | 432 if (f->type == NGX_QUIC_FT_ACK_ECN) { |
417 p = ngx_slprintf(p, last, " ECN counters ect0:%uL ect1:%uL ce:%uL", | 433 p = ngx_slprintf(p, last, " ECN counters ect0:%uL ect1:%uL ce:%uL", |
418 f->u.ack.ect0, f->u.ack.ect1, f->u.ack.ce); | 434 f->u.ack.ect0, f->u.ack.ect1, f->u.ack.ce); |
3105 ngx_uint_t found; | 3121 ngx_uint_t found; |
3106 ngx_queue_t *q; | 3122 ngx_queue_t *q; |
3107 ngx_quic_frame_t *f; | 3123 ngx_quic_frame_t *f; |
3108 ngx_quic_connection_t *qc; | 3124 ngx_quic_connection_t *qc; |
3109 | 3125 |
3110 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, | |
3111 "quic handle ack range min:%uL max:%uL", min, max); | |
3112 | |
3113 qc = c->quic; | 3126 qc = c->quic; |
3114 | 3127 |
3115 *send_time = NGX_TIMER_INFINITE; | 3128 *send_time = NGX_TIMER_INFINITE; |
3116 found = 0; | 3129 found = 0; |
3117 found_num = 0; | 3130 found_num = 0; |