From d5a6783ac9ca54777803943c334570ff4740f560 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 21 Apr 2014 10:54:27 +0200 Subject: [PATCH] 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. --- src/proto_http.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) 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; } -- 2.47.3