]> git.kaiwu.me - haproxy.git/commit
BUG/MAJOR: mux-h2: Preserve raw data on aborted frontend tunnels
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 29 Sep 2026 12:20:26 +0000 (14:20 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 29 Sep 2026 12:30:29 +0000 (14:30 +0200)
commitc34d67123ae87a517e8e12992ef59fa50b38a6ad
tree6c1d2febaea1ec35cecffbfdc1a5fa948663e37d
parentab6ce5c7d1a7802ef1a938c706717d8d54af59d5
BUG/MAJOR: mux-h2: Preserve raw data on aborted frontend tunnels

Since the commit 523112b72 ("MEDIUM: mux-h2: Use RAW_DATA blocks to store
tunneled data"), raw data received after a tunnel abort on client side were
not properly handled. These data were added as plain HTTP data, triggering a
BUG_ON() because it is invalid by definition. Instead they must be handled
as true raw data from the HTX point of view.

So now, we properly use RAW_DATA for aborted tunnels on the frontend. The
backend must continue to use regular DATA blocks for the rejection response,
whose payload and trailers remain valid. This matches the existing handling
of trailers and END_STREAM on aborted tunnels.

A regression test was added with early tunnel data left pending, then more
data received after the rejection headers while the response is still
pending.  It reproduces the HTX assertion without this fix.

It is a 3.5-specific issue. No backport is needed.
reg-tests/http-messaging/connect_aborted_inflight.vtc [new file with mode: 0644]
src/mux_h2.c