From: Willy Tarreau Date: Mon, 21 Apr 2014 08:54:27 +0000 (+0200) Subject: MINOR: http: further cleanups of response forwarding function X-Git-Tag: v1.5-dev23~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d5a6783ac9ca54777803943c334570ff4740f560;p=thirdparty%2Fhaproxy.git MINOR: http: further cleanups of response forwarding function There is no reason for mixing compressing and non-compressing code in the DATA state, they don't share anything. Better make this clearer. --- diff --git a/src/proto_http.c b/src/proto_http.c index 8e0b0bf408..114efef89d 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -6227,17 +6227,19 @@ int http_response_forward_body(struct session *s, struct channel *res, int an_bi if (ret < 0) goto aborted_xfer; - if (res->to_forward || msg->chunk_len) { - res->flags |= CF_WAKE_WRITE; + if (msg->chunk_len) { + /* input empty or output full */ + if (res->buf->i > msg->next) + res->flags |= CF_WAKE_WRITE; goto missing_data; } } - - if (msg->chunk_len > res->buf->i - msg->next) { - res->flags |= CF_WAKE_WRITE; - goto missing_data; - } else { + if (msg->chunk_len > res->buf->i - msg->next) { + /* output full */ + res->flags |= CF_WAKE_WRITE; + goto missing_data; + } msg->next += msg->chunk_len; msg->chunk_len = 0; }