]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: hq-interop: fix FIN transmission
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 21 Jul 2025 09:29:34 +0000 (11:29 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 21 Jul 2025 13:38:02 +0000 (15:38 +0200)
commitb0fe45307992c657dc52c30eb4150638bab97ecb
tree9229dc82332b90ea7a74bc61f527ccf8a9e60df3
parent563b4fafc26f20ff0e799811f7cea7dca01f2c9e
BUG/MINOR: hq-interop: fix FIN transmission

Since the following patch, app_ops layer is now responsible to report
that HTX block was the last transmitted so that FIN STREAM can be set.
This is mandatory to properly support HTTP 1xx interim responses.

  f349df44b4e21d8bf9b575a0aa869056a2ebaa58
  MINOR: qmux: change API for snd_buf FIN transmission

This change was correctly implemented in HTTP/3 code, however an issue
appeared on hq-interop transcoder in case zero-copy DATA transfer is
performed when HTX buffer is swapped. If this occured during the
transfer of the last HTX block, EOM is not detected and thus STREAM FIN
is never set.

Most of the times, QMUX shut callback is called immediately after. This
results in an emission of a RESET_STREAM to the client, which prevents
the data transfer.

To fix this, use the same method as HTTP/3 : HTX EOM flag status is
checked before any transfer, thus preserving it even after a zero-copy.

Criticity of this bug is low as hq-interop is experimental and is mostly
used for interop testing.

This should fix github issue #3038.

This patch must be backported wherever the above one is.
src/hq_interop.c