]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MEDIUM: mux-h1: Support C-L/T-E header suppressions when sending messages
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 16 May 2024 15:37:13 +0000 (17:37 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 17 May 2024 14:33:53 +0000 (16:33 +0200)
commit2fc9e6fa39360301b2588f4a057d146d60c07343
tree8170d47a824a2862310ab5c3a089b116fbff3b03
parent1a2699d5f7fb4dec1a0d88c9883a5294a9e3d533
MEDIUM: mux-h1: Support C-L/T-E header suppressions when sending messages

During the 2.9 dev cycle, to be able to support zero-copy data forwarding, a
change on the H1 mux was performed to ignore the headers modifications about
payload representation (Content-Length and Transfer-Encoding headers).

It appears there are some use-cases where it could be handy to change values
of these headers or just remove them. For instance, we can imagine to remove
these headers on a server response to force the old HTTP/1.0 close mode
behavior. So thaks to this patch, the rules are relaxed. It is now possible
to remove these headers. When this happens, the following rules are applied:

 * If "Content-Length" header is removed but a "Transfer-Encoding: chunked"
   header is found, no special processing is performed. The message remains
   chunked. However the close mode is not forced.

 * If "Transfer-Encoding" header is removed but a "Content-Length" header is
   found, no special processing is performed. The payload length must comply
   to the specified content length.

 * If one of them is removed and the other one is not found, a response is
   switch the close mode and a "Content-Length: 0" header is forced on a
   request.

With these rules, we fit the best to the user expectations.

This patch depends on the following commit:

  * MINOR: mux-h1: Add a flag to ignore the request payload

This patch should fix the issue #2536. It should be backported it to 2.9
with the commit above.
src/mux_h1.c