]> git.kaiwu.me - haproxy.git/commit
BUG/MEDIUM: mux-h2: consider the send list as pending data for the timeout
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 6 Nov 2026 08:56:56 +0000 (09:56 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Mon, 9 Nov 2026 12:33:52 +0000 (13:33 +0100)
commitbac49762b651dced1786bfd60244e4e366024862
tree963a8ff9612a91dbad954b3ac41e66478d134308
parentcea70011fe085d270199b701a1f62daf44d48665
BUG/MEDIUM: mux-h2: consider the send list as pending data for the timeout

When no stream connector is attached anymore, h2c_update_timeout() only
looks at the mux buffer to decide whether the connection still has data
to send, in which case it must be armed with the regular data timeout.
Streams may however still be queued in the send list while their data
sits in their own iobuf: they are blocked on a missing mux buffer, so
br_data() on the mux buffer is zero even though some bytes remain to be
sent. Such a connection is then considered idle and armed with neither
the data timeout nor anything else.

Let's also consider the send list in the condition, as it was part of
the original h2c_may_expire() before commit 3439583dd ("MEDIUM: mux-h2:
slightly relax timeout management rules") reduced it to the attached
stream count, with only br_data() being put back afterwards. This
matches what fcgi_conn_update_timeout() does.

This could be backported as far as 2.6.
src/mux_h2.c