diff options
author | Sergey Kandaurov <pluknet@nginx.com> | 2020-08-19 13:24:47 +0300 |
---|---|---|
committer | Sergey Kandaurov <pluknet@nginx.com> | 2020-08-19 13:24:47 +0300 |
commit | 391abc00c9ead945635f8b9b6a35e50eeb4dc3e2 (patch) | |
tree | d2837fa7590be7ee3826b0a07677ca163d211b4f /src | |
parent | 3bf7b02e6eccb6e51161693d887fccac18afaf38 (diff) | |
download | nginx-391abc00c9ead945635f8b9b6a35e50eeb4dc3e2.tar.gz nginx-391abc00c9ead945635f8b9b6a35e50eeb4dc3e2.zip |
QUIC: do not arm loss detection timer for succeeding packets.
Diffstat (limited to 'src')
-rw-r--r-- | src/event/ngx_event_quic.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c index f0f07bf38..0781bcfb0 100644 --- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -3781,11 +3781,19 @@ ngx_quic_detect_lost(ngx_connection_t *c) ctx = &qc->send_ctx[i]; + if (ctx->largest_ack == (uint64_t) -1) { + continue; + } + while (!ngx_queue_empty(&ctx->sent)) { q = ngx_queue_head(&ctx->sent); start = ngx_queue_data(q, ngx_quic_frame_t, queue); + if (start->pnum > ctx->largest_ack) { + break; + } + wait = start->last + thr - now; ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, @@ -3798,10 +3806,7 @@ ngx_quic_detect_lost(ngx_connection_t *c) min_wait = wait; } - if ((start->pnum > ctx->largest_ack) - || ctx->largest_ack == (uint64_t) -1 - || ((ctx->largest_ack - start->pnum) < NGX_QUIC_PKT_THR)) - { + if (ctx->largest_ack - start->pnum < NGX_QUIC_PKT_THR) { break; } } |