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.
This commit is contained in:
Willy Tarreau 2015-05-01 10:25:45 +02:00
parent 34dfc60571
commit b4d0c03aee

View File

@ -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) {