mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-02-15 22:31:29 +01:00
This patch is similar to the previous one on the fcgi. Same is true for the H2. But the bug is far harder to trigger because of the protocol cinematic. But it may explain strange aborts in some edge cases. A read0 received on the connection must not be handled too early by H2 streams. If the demux buffer is not empty, the pending read0 must not be considered. The H2 streams must not be passed in half-closed remote state in h2s_wake_one_stream() and the CS_FL_EOS flag must not be set on the associated conn-stream in h2_rcv_buf(). To sum up, it means, if there are still data pending in the demux buffer, no abort must be reported to the streams. To fix the issue, a dedicated function has been added, responsible for detecting pending read0 for a H2 connection. A read0 is reported only if the demux buffer is empty. This function is used instead of conn_xprt_read0_pending() at some places. Note that the HREM stream state should not be used to report aborts. It is performed on h2s_wake_one_stream() function and it is a legacy of the very first versions of the mux-h2. This patch should be backported as far as 2.0. In the 1.8, the code is too different to apply it like that. But it is probably useless because the mux-h2 can only be installed on the client side.
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.9%
Makefile
0.5%
Lua
0.2%
Python
0.1%