From b4d0c03aee283e286880f93c4a8c053772a430c8 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 1 May 2015 10:25:45 +0200 Subject: [PATCH] BUG/MEDIUM: http: remove content-length form responses with bad transfer-encoding The spec mandates that content-length must be removed from messages if Transfer-Encoding is present, not just for valid ones. This must be backported to 1.5 and 1.4. --- src/proto_http.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/proto_http.c b/src/proto_http.c index ad075a49f7..a34c11036a 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -6235,12 +6235,11 @@ int http_wait_for_response(struct stream *s, struct channel *rep, int an_bit) /* Chunked responses must have their content-length removed */ ctx.idx = 0; - if (msg->flags & HTTP_MSGF_TE_CHNK) { + if (use_close_only || (msg->flags & HTTP_MSGF_TE_CHNK)) { while (http_find_header2("Content-Length", 14, rep->buf->p, &txn->hdr_idx, &ctx)) http_remove_header2(msg, &txn->hdr_idx, &ctx); } - else while (!use_close_only && - http_find_header2("Content-Length", 14, rep->buf->p, &txn->hdr_idx, &ctx)) { + else while (http_find_header2("Content-Length", 14, rep->buf->p, &txn->hdr_idx, &ctx)) { signed long long cl; if (!ctx.vlen) { -- 2.47.3