]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: h1-htx: Don't state interim responses are bodyless
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 3 Jun 2024 15:46:16 +0000 (17:46 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 4 Jun 2024 12:23:40 +0000 (14:23 +0200)
commit7c84ee71f77616f569081060d81455c137fc13f5
tree5c796c9af3c039ca2794efeb74b54e58baf8d3c3
parent1ef6cdcd26fc3020cff3fd459d7ae37c169861a2
BUG/MEDIUM: h1-htx: Don't state interim responses are bodyless

Interim responses are by definition bodyless. But we must not set the
corresponding HTX start-line flag, beecause the start-line of the final
response is still expected. Setting the flag above too early may lead the
multiplexer on the sending side to consider the message is finished after
the headers of the interim message.

It happens with the H2 multiplexer on frontend side if a "100-Continue" is
received from the server. The interim response is sent and
HTX_SL_F_BODYLESS_RESP flag is evaluated. Then, the headers of the final
response are sent with ES flag, because HTX_SL_F_BODYLESS_RESP flag was seen
too early, leading to a protocol error if the response has a body.

Thanks to grembo for this analysis.

This patch should fix the issue #2587. It must be backported as far as 2.9.
src/h1_htx.c