From 6fef8ae0478c201a1dce555963f0838635b02e6b Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 22 Apr 2014 21:22:06 +0200 Subject: [PATCH] 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. --- src/proto_http.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/proto_http.c b/src/proto_http.c index ff0a66203..45ffd0013 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);