mirror of
http://git.haproxy.org/git/haproxy.git
synced 2026-02-06 11:13:15 +02:00
aaa67bcef299486f1cdb75ef28b3ec6c39713ae6
On the server side, when a H1 stream is detached from the connection, if the connection is not reusable but some outgoing data remain, the connection is not immediatly released. In this case, the connection is not inserted in any idle connection list. But it is still attached to the session. Because of that, it can be erroneously reused. h1_avail_streams() always report a free slot if no stream is attached to the connection, independently on the connection's state. It is obviously a bug. If a second request is handled by the same session (it happens with H2 connections on the client side), this connection is reused before we close it. There is small window to hit the bug, but it may lead to very strange behaviors. For instance, if a first h2 request is quickly aborted by the client while it is blocked in the mux on the server side (so before any response is received), a second request can be processed and sent to the server. Because the connection was not closed, the possible reply to the first request will be interpreted as a reply to the second one. It is probably the bug described by Peter Fröhlich in the issue #290. To fix the bug, a new flag has been added to know if an H1 connection is idle or not. So now, H1C_F_CS_IDLE is set when a connection is idle and useable to handle a new request. If it is set, we try to add the connection in an idle connection list. And h1_avail_streams() only relies on this flag now. Concretely, this flag is set when a K/A stream is detached and both the request and the response are in DONE state. It is exclusive to other H1C_F_CS flags. This patch must be backported as far as 1.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
haproxy public development tree. Unstable code.
cachecachingddos-mitigationfastcgihaproxyhigh-availabilityhigh-performancehttphttp2httpsipv6load-balancerproxyproxy-protocolreverse-proxytls13
Readme
243 MiB
Languages
C
98%
Shell
0.9%
Makefile
0.5%
Lua
0.2%
Python
0.2%