]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: h3: handle interim response properly on FE side
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 11 Jul 2025 12:25:30 +0000 (14:25 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 15 Jul 2025 16:39:23 +0000 (18:39 +0200)
commite7b3a69c594ab14cf25e9b8d038635aef4b8229f
tree19d35623bef77b11678d779a84238c4abdae8dd4
parentf349df44b4e21d8bf9b575a0aa869056a2ebaa58
BUG/MEDIUM: h3: handle interim response properly on FE side

On frontend side, HTTP/3 layer is responsible to transcode an HTX
response message into HTTP/3 HEADERS frame. This operations is handled
via h3_resp_headers_send().

Prior to this patch, if HTX EOM was encountered in the HTX message after
response transcoding, <fin> was reported to the QMUX layer. This will in
turn cause FIN stream bit to be set when the response is emitted.
However, this is not correct as a single HTX response can be constitued
of several interim message, each delimited by EOM block.

Most of the time, this bug will cause the client to close the connection
as it is invalid to receive an interim response with FIN bit set.

Fixes this by now properly differentiate interim and final response.
During interim response transcoding, the new flag H3_SF_SENT_INTERIM
will be set, which will prevent <fin> to be reported. Thus, <fin> will
only be notified for the final response.

This must be backported up to 2.6. Note that it relies on the previous
patch which also must be taken.
src/h3.c