BUG/MINOR: http-ana: Report SF_FINST_R flag on error waiting the request body
When we wait for the request body, we are still in the request analysis. So
a SF_FINST_R flag must be reported in logs. Even if some data are already
received, at this staged, nothing is sent to the server.
This patch could be backported in all stable versions.
(cherry picked from commit f4569bbcc1
)
Signed-off-by: Willy Tarreau <w@1wt.eu>
(cherry picked from commit ec4df6f9668b601e2775b28d6b1250ac37a5f26c)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
This commit is contained in:
parent
1101a0504f
commit
751e1ec219
@ -24,7 +24,7 @@ server s1 {
|
||||
|
||||
syslog S -level info {
|
||||
recv
|
||||
expect ~ "[^:\\[ ]*\\[[0-9]*\\]: .* .* fe1 fe1/<NOSRV> .* 408 .* - - cD-- .* .* \"GET /this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url HTTP/1\\.1\""
|
||||
expect ~ "[^:\\[ ]*\\[[0-9]*\\]: .* .* fe1 fe1/<NOSRV> .* 408 .* - - cR-- .* .* \"GET /this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url HTTP/1\\.1\""
|
||||
barrier b1 sync
|
||||
|
||||
recv
|
||||
|
@ -907,9 +907,8 @@ int http_wait_for_request_body(struct stream *s, struct channel *req, int an_bit
|
||||
{
|
||||
struct session *sess = s->sess;
|
||||
struct http_txn *txn = s->txn;
|
||||
struct http_msg *msg = &s->txn->req;
|
||||
|
||||
DBG_TRACE_ENTER(STRM_EV_STRM_ANA|STRM_EV_HTTP_ANA, s, txn, msg);
|
||||
DBG_TRACE_ENTER(STRM_EV_STRM_ANA|STRM_EV_HTTP_ANA, s, txn, &s->txn->req);
|
||||
|
||||
|
||||
switch (http_wait_for_msg_body(s, req, s->be->timeout.httpreq, 0)) {
|
||||
@ -967,7 +966,7 @@ int http_wait_for_request_body(struct stream *s, struct channel *req, int an_bit
|
||||
if (!(s->flags & SF_ERR_MASK))
|
||||
s->flags |= SF_ERR_PRXCOND;
|
||||
if (!(s->flags & SF_FINST_MASK))
|
||||
s->flags |= (msg->msg_state < HTTP_MSG_DATA ? SF_FINST_R : SF_FINST_D);
|
||||
s->flags |= SF_FINST_R;
|
||||
|
||||
req->analysers &= AN_REQ_FLT_END;
|
||||
req->analyse_exp = TICK_ETERNITY;
|
||||
@ -4269,7 +4268,7 @@ enum rule_result http_wait_for_msg_body(struct stream *s, struct channel *chn,
|
||||
if (!(s->flags & SF_ERR_MASK))
|
||||
s->flags |= SF_ERR_CLITO;
|
||||
if (!(s->flags & SF_FINST_MASK))
|
||||
s->flags |= SF_FINST_D;
|
||||
s->flags |= SF_FINST_R;
|
||||
_HA_ATOMIC_INC(&sess->fe->fe_counters.failed_req);
|
||||
if (sess->listener && sess->listener->counters)
|
||||
_HA_ATOMIC_INC(&sess->listener->counters->failed_req);
|
||||
@ -4282,7 +4281,7 @@ enum rule_result http_wait_for_msg_body(struct stream *s, struct channel *chn,
|
||||
if (!(s->flags & SF_ERR_MASK))
|
||||
s->flags |= SF_ERR_SRVTO;
|
||||
if (!(s->flags & SF_FINST_MASK))
|
||||
s->flags |= SF_FINST_D;
|
||||
s->flags |= SF_FINST_R;
|
||||
stream_inc_http_fail_ctr(s);
|
||||
http_reply_and_close(s, txn->status, http_error_message(s));
|
||||
ret = HTTP_RULE_RES_ABRT;
|
||||
|
Loading…
Reference in New Issue
Block a user