]> 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)
committerSergey Kandaurov <s.kandaurov@f5.com>
Tue, 23 Dec 2025 18:40:33 +0000 (22:40 +0400)
commitaf8b6ac13e84371f598064b23f401e8764dde881
treec8e31f9df5cfb8bcfac86442285df3aa5587f008
parented88e47faf6fb3f340e97fdf472ee4a651d79757
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