From: Christopher Faulet Date: Fri, 21 May 2021 07:49:20 +0000 (+0200) Subject: BUG/MINOR: http-comp: Preserve HTTP_MSGF_COMPRESSIONG flag on the response X-Git-Tag: v2.5-dev1~246 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=acfd71b97;p=thirdparty%2Fhaproxy.git BUG/MINOR: http-comp: Preserve HTTP_MSGF_COMPRESSIONG flag on the response This flag is set on the response when its payload is compressed by HAProxy. It must be preserved because it may be used when the log message is emitted. When the compression filter was refactored to support the HTX, an optimization was added to not perform extra proessing on the trailers. HTTP_MSGF_COMPRESSIONG flag is removed when the last data block is compressed. It is not required, it is just an optimization and unfortunately a bug. This optimization must be removed to preserve the flag. This patch must be backported as far as 2.0. On the HTX is affected. --- diff --git a/src/flt_http_comp.c b/src/flt_http_comp.c index b6aeb2b25b..22af46b8bf 100644 --- a/src/flt_http_comp.c +++ b/src/flt_http_comp.c @@ -183,9 +183,6 @@ comp_http_payload(struct stream *s, struct filter *filter, struct http_msg *msg, while (next && htx_get_blk_type(next) == HTX_BLK_UNUSED) next = htx_get_next_blk(htx, blk); - if (!(msg->flags & HTTP_MSGF_COMPRESSING)) - goto consume; - if (htx_compression_buffer_init(htx, &trash) < 0) { msg->chn->flags |= CF_WAKE_WRITE; goto end; @@ -215,8 +212,6 @@ comp_http_payload(struct stream *s, struct filter *filter, struct http_msg *msg, len -= ret; consumed += ret; to_forward += b_data(&trash); - if (last) - msg->flags &= ~HTTP_MSGF_COMPRESSING; break; case HTX_BLK_TLR: @@ -232,7 +227,6 @@ comp_http_payload(struct stream *s, struct filter *filter, struct http_msg *msg, goto error; to_forward += b_data(&trash); } - msg->flags &= ~HTTP_MSGF_COMPRESSING; /* fall through */ default: