mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 05:41:26 +02:00
Commit 7021a8c4d8 ("BUG/MINOR: mux-h2: also count streams for refused ones") addressed stream counting issues on some error cases but not completely correctly regarding the conn_err vs stream_err case. Indeed, contrary to the initial analysis, h2c_dec_hdrs() can set H2_CS_ERROR when facing some unrecoverable protocol errors, and it's not correct to send it to strm_err which will only send the RST_STREAM frame and the subsequent GOAWAY frame is in fact the result of the read timeout. The difficulty behind this lies on the sequence of output validations because h2c_dec_hdrs() returns two results at once: - frame processing status (done/incomplete/failed) - connection error status The original ordering requires to write 2 exemplaries of the exact same error handling code disposed differently, which the patch above tried to factor to one. After careful inspection of h2c_dec_hdrs() and its comments, it's clear that it always returns -1 on failure, *including* connection errors. This means we can rearrange the test to get rid of the missing data first, and immediately enter the no-return zone where both the stream and connection errors can be checked at the same place, making sure to consistently maintain error counters. This is way better because we don't have to update stream counters on the error path anymore. h2spec now passes the test much faster. This will need to be backported to the same branches as the commit above, which was already backported to 2.9.
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%