]> git.kaiwu.me - nginx.git/commit
QUIC: do not block ACKs by congestion control.
authorSergey Kandaurov <pluknet@nginx.com>
Fri, 25 Apr 2025 19:32:24 +0000 (23:32 +0400)
committerpluknet <pluknet@nginx.com>
Tue, 29 Apr 2025 15:53:41 +0000 (19:53 +0400)
commitf3542500b6d74e3e88fc84b88144afe67882d1fa
treea4a1d9d751ce79d4432a669a886206419de7618c
parentadda7041582d8565ee1e5e7dfe740db85398e1ce
QUIC: do not block ACKs by congestion control.

Previously, it was not possible to send acknowledgments if the
congestion window was limited or temporarily exceeded, such as
after sending a large response or MTU probe.  If ACKs were not
received from the peer for some reason to update the in-flight
bytes counter below the congestion window, this might result in
a stalled connection.

The fix is to send ACKs regardless of congestion control.  This
meets RFC 9002, Section 7:
: Similar to TCP, packets containing only ACK frames do not count
: toward bytes in flight and are not congestion controlled.

This is a simplified implementation to send ACK frames from the
head of the queue.  This was made possible after 6f5f17358.

Reported in trac ticket #2621 and subsequently by Vladimir Homutov:
https://mailman.nginx.org/pipermail/nginx-devel/2025-April/ZKBAWRJVQXSZ2ISG3YJAF3EWMDRDHCMO.html
src/event/quic/ngx_event_quic_output.c