Christopher Faulet
c2c043ed43
BUG/MEDIUM: stats: Consume the request except when parsing the POST payload
The stats applet is designed to consume the request at the end, when it finishes to send the response. And during the response forwarding, because the request is not consumed, the applet states it will not consume data. This avoid to wake the applet up in loop. When it finishes to send the response, the request is consumed. For POST requests, there is no issue because the response is small enough. It is sent in one time and must be processed by HTTP analyzers. Thus the forwarding is not performed by the applet itself. The applet is always able to consume the request, regardless the payload length. But for other requests, it may be an issue. If the response is too big to be sent in one time and if the requests is not fully received when the response headers are sent, the applet may be blocked infinitely, not consuming the request. Indeed, in the case the applet will be switched in infinite forward mode, the request will not be consumed immediately. At the end, the request buffer is flushed. But if some data must still be received, the applet is not woken up because it is still in a "not-consuming" mode. So, to fix the issue, we must take care to re-enable data consuming when the end of the response is reached. This patch must be backported as far as 2.6.
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
Shell
100%