]> git.kaiwu.me - haproxy.git/commit
BUG/MEDIUM: h3: Set FIN when last DATA block is sent via zero-copy
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 23 Sep 2026 18:34:31 +0000 (20:34 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 24 Sep 2026 07:47:01 +0000 (09:47 +0200)
commit65591cd879fffc313aa35cb124ad4d3eee7281d6
treefa3c1516c139c36bfb81c1aa2cc42a4aecda19d4
parent2ed6101cab659b11b9784aeae8fd9b9825f3f534
BUG/MEDIUM: h3: Set FIN when last DATA block is sent via zero-copy

Since commit ab7bb500a ("MEDIUM: h3: Use flags of HTX blocks to detect end
of message during sending"), the end of the message is detected via the
HTX_BLK_FL_EOM flag of consumed HTX blocks. But the zero-copy path in
h3_resp_data_send() jumps to the end without testing this flag. So when the
last DATA block of a message is transferred via zero-copy, "fin" is never
set and no FIN is emitted on the QUIC stream, leaving the peer waiting
indefinitely for the end of the stream.

Fix this by capturing the block's EOM flag before the buffer area swap and
setting "fin" accordingly.

It is a 3.5-specific issue. No backport needed.
src/h3.c