aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2020-08-19 13:24:47 +0300
committerSergey Kandaurov <pluknet@nginx.com>2020-08-19 13:24:47 +0300
commit391abc00c9ead945635f8b9b6a35e50eeb4dc3e2 (patch)
treed2837fa7590be7ee3826b0a07677ca163d211b4f /src
parent3bf7b02e6eccb6e51161693d887fccac18afaf38 (diff)
downloadnginx-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.c13
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;
}
}