diff --git a/include/common/htx.h b/include/common/htx.h index 5527a473f..b22da99b4 100644 --- a/include/common/htx.h +++ b/include/common/htx.h @@ -149,6 +149,7 @@ #define HTX_FL_PARSING_ERROR 0x00000001 /* Set when a parsing error occurred */ #define HTX_FL_PROCESSING_ERROR 0x00000002 /* Set when a processing error occurred */ #define HTX_FL_UPGRADE 0x00000004 /* Set when an upgrade is in progress */ +#define HTX_FL_PROXY_RESP 0x00000008 /* Set when the response was generated by HAProxy */ /* HTX block's type (max 15). */ diff --git a/src/http_ana.c b/src/http_ana.c index f1546fdd7..c16d61f9b 100644 --- a/src/http_ana.c +++ b/src/http_ana.c @@ -2527,6 +2527,7 @@ int http_apply_redirect_rule(struct redirect_rule *rule, struct stream *s, struc /* let's log the request time */ s->logs.tv_request = now; + htx->flags |= HTX_FL_PROXY_RESP; data = htx->data - co_data(res); c_adv(res, data); res->total += data; @@ -4879,6 +4880,7 @@ void http_server_error(struct stream *s, struct stream_interface *si, int err, chn->buf.data = msg->data; memcpy(chn->buf.area, msg->area, msg->data); htx = htx_from_buf(&chn->buf); + htx->flags |= HTX_FL_PROXY_RESP; c_adv(chn, htx->data); chn->total += htx->data; } @@ -4909,6 +4911,7 @@ void http_reply_and_close(struct stream *s, short status, struct buffer *msg) chn->buf.data = msg->data; memcpy(chn->buf.area, msg->area, msg->data); htx = htx_from_buf(&chn->buf); + htx->flags |= HTX_FL_PROXY_RESP; c_adv(chn, htx->data); chn->total += htx->data; } @@ -5103,6 +5106,7 @@ static int http_reply_40x_unauthorized(struct stream *s, const char *auth_realm) if (!htx_add_endof(htx, HTX_BLK_EOM)) goto fail; + htx->flags |= HTX_FL_PROXY_RESP; data = htx->data - co_data(res); c_adv(res, data); res->total += data;