mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-17 06:41:00 +01:00
Cookie header are treated specifically to merge multiple occurences in a single HTX header. This is treated in a if-block condition inside the 'while (1)' loop for headers parsing. The length value of ist representing cookie header is set to -1 by http_cookie_register(). The problem is that then a continue statement is used but without incrementing 'hdr_idx' to pass on the next header. This issue was revealed by the introduction of commit : commit d6fb7a0e0f3a79afa1f4b6fc7b62053c3955dc4a BUG/MEDIUM: h3: reject request with invalid header name Before the aformentionned patch, the bug was hidden : on the next while iteration, all isteq() invocations won't match with cookie header length now set to -1. htx_add_header() fails silently because length is invalid. hdr_idx is finally incremented which allows parsing to proceed normally with the next header. Now, a cookie header with length -1 do not pass the test on header name conformance introduced by the above patch. Thus, a spurrious RESET_STREAM is emitted. This behavior has been reported on the mailing list by Shawn Heisey who found out that browsers disabled H3 usage due to the RESET_STREAM received. Big thanks to him for his testing on the master branch. This issue is simply resolved by incrementing hdr_idx before continue statement. It could have been detected earlier if htx_add_header() return value was checked. This will be the subject of a dedicated commit outside of the backport scope. This must be backported up to 2.6.
The HAProxy documentation has been split into a number of different files for ease of use. Please refer to the following files depending on what you're looking for : - INSTALL for instructions on how to build and install HAProxy - BRANCHES to understand the project's life cycle and what version to use - LICENSE for the project's license - CONTRIBUTING for the process to follow to submit contributions The more detailed documentation is located into the doc/ directory : - doc/intro.txt for a quick introduction on HAProxy - doc/configuration.txt for the configuration's reference manual - doc/lua.txt for the Lua's reference manual - doc/SPOE.txt for how to use the SPOE engine - doc/network-namespaces.txt for how to use network namespaces under Linux - doc/management.txt for the management guide - doc/regression-testing.txt for how to use the regression testing suite - doc/peers.txt for the peers protocol reference - doc/coding-style.txt for how to adopt HAProxy's coding style - doc/internals for developer-specific documentation (not all up to date)
Description
Languages
C
98%
Shell
0.9%
Makefile
0.5%
Lua
0.2%
Python
0.2%