From: Willy Tarreau Date: Tue, 22 Apr 2014 19:22:06 +0000 (+0200) Subject: BUG/MINOR: http: deinitialize compression after a compression error X-Git-Tag: v1.5-dev23~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6fef8ae0478c201a1dce555963f0838635b02e6b;p=thirdparty%2Fhaproxy.git BUG/MINOR: http: deinitialize compression after a compression error If for some reason, the compression returns an error, the compression is not deinitialized which also means that any pending data are not flushed and could be lost, especially in the chunked-encoded case. No backport is needed. --- diff --git a/src/proto_http.c b/src/proto_http.c index ff0a662030..45ffd0013e 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -6434,6 +6434,11 @@ int http_response_forward_body(struct session *s, struct channel *res, int an_bi return 0; aborted_xfer: + if (unlikely(compressing)) { + http_compression_buffer_end(s, &res->buf, &tmpbuf, msg->msg_state >= HTTP_MSG_TRAILERS); + compressing = 0; + } + txn->rsp.msg_state = HTTP_MSG_ERROR; /* don't send any error message as we're in the body */ stream_int_retnclose(res->cons, NULL);