mirror of
http://git.haproxy.org/git/haproxy.git
synced 2026-02-15 06:52:17 +02:00
fbff854250c73cf739f6a9b14753e6a283f2b055
In TCP, when a conn-stream is detached from a backend connection, the connection must be always closed. It was only performed if an error or a shutdown occurred or if there was no connection owner. But it is a problem, because, since the 2.3, backend connections are always owned by a session. This way it is possible to have idle connections attached to a session instead of a server. But there is no idle connections in TCP. In addition, when a session owns a connection it is responsible to close it when it is released. But it only works for idle connections. And it only works if the session is released. Thus there is the place for bugs here. And indeed, a connection leak may occur if a connection retry is performed because of a timeout. In this case, the underlying connection is still alive and is waiting to be fully established. Thus, when the conn-stream is detached from the connection, the connection is not closed. Because the PT multiplexer is quite simple, there is no timeout at this stage. We depend on the kenerl to be notified and finally close the connection. With an unreachable server, orphan backend connections may be accumulated for a while. It may be perceived as a leak. Because there is no reason to keep such backend connections, we just close it now. Frontend connections are still closed by the session or when an error or a shutdown occurs. This patch should fix the issue #1522. It must be backported as far as 2.0. Note that the 2.2 and 2.0 are not affected by this bug because there is no owner for backend TCP connections. But it is probably a good idea to backport the patch on these versions to avoid any future bugs.
…
…
…
…
…
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
254 MiB
Languages
C
98%
Shell
0.9%
Makefile
0.5%
Lua
0.2%
Python
0.2%