mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-20 10:40:13 +00:00
haproxy public development tree
5ad2b64262
In http_create_txn(): vars_init_head() was performed on both s->vars_txn and s->var_reqres lists. But this is wrong, these two lists are already initialized upon stream creation in stream_new(). Moreover, between stream_new() and http_create_txn(), some variable may be defined (e.g.: by the frontend), resulting in lists not being empty. Because of this "extra" list initialization, already defined variables can be lost. This causes txn dependant code not being able to access previously defined variables as well as memory leak because http_destroy_txn() relies on these lists to perform the purge. This proved to be the case when a frontend sets variables and lua sample fetch is used in backend section as described in GH #1935. Many thanks to Darragh O'Toole for his detailed report. Removing extra var_init_head (x2) in http_create_txn() to fix the issue. Adding somme comments in the code in an attempt to prevent future misuses of s->var_reqres, and s->var_txn lists. It should be backported in every stable version. (This is an old bug that seems to exist since 1.6-dev6) [cf: On 2.0 and 1.8, for the legacy HTTP code, vars_init() are used during the TXN cleanup, when the stream is reused. So, these calls must be moved from http_init_txn() to http_reset_txn() and not removed.] |
||
---|---|---|
.github | ||
addons | ||
admin | ||
dev | ||
doc | ||
examples | ||
include | ||
reg-tests | ||
scripts | ||
src | ||
tests | ||
.cirrus.yml | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
BRANCHES | ||
CHANGELOG | ||
CONTRIBUTING | ||
INSTALL | ||
LICENSE | ||
MAINTAINERS | ||
Makefile | ||
README | ||
SUBVERS | ||
VERDATE | ||
VERSION |
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)