[PATCH 3 of 5] QUIC: fixed PTO expiration condition

Roman Arutyunyan arut at nginx.com
Tue Aug 1 07:45:14 UTC 2023


# HG changeset patch
# User Roman Arutyunyan <arut at nginx.com>
# Date 1690874519 -14400
#      Tue Aug 01 11:21:59 2023 +0400
# Node ID 741deb8ff8257914312ab134f3a0b69256c661f4
# Parent  a53bbd94a0fa436535ee3bbcb6176befdf47c68a
QUIC: fixed PTO expiration condition.

Previously, PTO handler analyzed the first packet in the sent queue for the
timeout expiration.  However, the last sent packet should be analyzed instead.
An example is timeout calculation in ngx_quic_set_lost_timer().

diff --git a/src/event/quic/ngx_event_quic_ack.c b/src/event/quic/ngx_event_quic_ack.c
--- a/src/event/quic/ngx_event_quic_ack.c
+++ b/src/event/quic/ngx_event_quic_ack.c
@@ -840,7 +840,7 @@ ngx_quic_pto_handler(ngx_event_t *ev)
             continue;
         }
 
-        q = ngx_queue_head(&ctx->sent);
+        q = ngx_queue_last(&ctx->sent);
         f = ngx_queue_data(q, ngx_quic_frame_t, queue);
 
         if (f->pnum <= ctx->largest_ack


More information about the nginx-devel mailing list