mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-17 06:41:00 +01:00
STREAM frame retransmission has been recently fixed. A new boolean field <dup> was created for quic_stream frame type. It is set for duplicated STREAM frame to ensure extra checks on the underlying buffer are conducted before sending the frame. All of this has been implemented by this commit : 315a4f6ae54da17fd28f7a14373b05bab0b5aa08 BUG/MEDIUM: quic: do not crash when handling STREAM on released MUX However, the above commit is incomplete. In the MUX code, when a new STREAM frame is created, <dup> is left uninitialized. In most cases this is harmless as it will only add extra unneeded checks before sending the frame. So this is mainly a performance issue. There is however one case where this bug will lead to a crash : when the response consists only of an empty STREAM frame. In this case, the empty frame will be silently removed as it is incorrectly assimilated to an already acked frame range in qc_build_frms(). This can trigger a BUG_ON() on the MUX code as a qcs instance is still in the send list after qc_send_frames() invocation. Note that this is extremely rare to have only an empty STREAM frame. It was reproduced with HTTP/0.9 where no HTTP status line exists on an empty body. I do not know if this is possible on HTTP/3 as a status line should be present each time in a HEADERS frame. Properly initialize <dup> field to 0 on each STREAM frames generated by the QUIC MUX to fix this issue. This crash may be linked to github issue #2049. This should 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%