BUG/MINOR: stats: Wait the body before processing POST requests
The stats applet waits to have a full body to process POST requests. Because
when it is waiting for the end of a request it does not produce anything, the
applet may be blocked. The client side is blocked because the stats applet does
not consume anything and the applet is waiting because all the body is not
received. Registering the analyzer AN_REQ_HTTP_BODY when a POST request is sent
for the stats applet solves the issue.
This patch must be backported to 2.0.
(cherry picked from commit bd9e842866ac759418a5f9e8832d2806eeb00bd8)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/proto_htx.c b/src/proto_htx.c
index 75794fb..38f3413 100644
--- a/src/proto_htx.c
+++ b/src/proto_htx.c
@@ -4991,8 +4991,11 @@
if (txn->meth == HTTP_METH_GET || txn->meth == HTTP_METH_HEAD)
appctx->st0 = STAT_HTTP_HEAD;
else if (txn->meth == HTTP_METH_POST) {
- if (appctx->ctx.stats.flags & STAT_ADMIN)
+ if (appctx->ctx.stats.flags & STAT_ADMIN) {
appctx->st0 = STAT_HTTP_POST;
+ if (msg->msg_state < HTTP_MSG_DATA)
+ req->analysers |= AN_REQ_HTTP_BODY;
+ }
else {
/* POST without admin level */
appctx->ctx.stats.flags &= ~STAT_CHUNKED;