mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
QUIC MUX is freed via qcc_release(). This in turn liberate all the remaining QCS instances. For each one of them, their corresponding stream-desc is released via qc_stream_desc_release(). This last function may itself notifies QUIC MUX when new buffers are available. This is useful when QCS are closed individually without the whole connection. However, when the connection is closed through qcc_release(), this may cause issue as some elements of QUIC MUX are already freed. In 2.9.6, a bug was detected directly linked to this. Indeed, QCC instance may be woken up on stream-desc release. If called through qcc_release(), this is an issue because QCC tasklet is freed before QCS instances. However, this bug is not systematic and relies on prior conditions : in particular, QUIC MUX must be under Tx buffers exhaustion prior to the qcc_release() invocation. The current dev tree is not impacted by this bug, thanks to QUIC MUX refactoring. Indeed, notifying accross layers have changed and now stream-desc release notifies individual QCS instances instead of the QCC element, which is a safer mechanism. However, to simplify backport process, bugfix is introduced in the current dev tree as it does not have any impact. Note that a proper fix would be to set quic-conn MUX state to QC_MUX_RELEASED. However, it is not possible to call quic_close() without having releasing all stream-desc elements first. The simpler solution was chosen to prevent other breaking issues during backports. This should fix github issue #2494. It should be backported up to 2.6. Note that prior to 2.7 qcc_release() was named qc_release().
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.1%
Shell
0.8%
Makefile
0.5%
Lua
0.2%
Python
0.2%