From: Willy Tarreau Date: Wed, 23 Apr 2014 18:29:01 +0000 (+0200) Subject: BUG/MINOR: http: don't report server aborts as client aborts X-Git-Tag: v1.5-dev24~30 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b2c6a786f707d08c92bfd9ea627c38612afca8e0;p=thirdparty%2Fhaproxy.git BUG/MINOR: http: don't report server aborts as client aborts Commit f003d37 ("BUG/MINOR: http: don't report client aborts as server errors") attempted to fix a longstanding issue by which some client aborts could be logged as server errors. Unfortunately, one of the tests involved there also catches truncated server responses, which are reported as client aborts. Instead, only check that the client has really closed using the abortonclose option, just as in done in the request path (which means that the close was propagated to the server). The faulty fix above was introduced in 1.5-dev15, and was backported into 1.4.23. Thanks to Patrick Hemmer for reporting this issue with traces showing the root cause of the problem. --- diff --git a/src/proto_http.c b/src/proto_http.c index 1e038f4613..5e14d58f6e 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -6357,7 +6357,7 @@ int http_response_forward_body(struct session *s, struct channel *res, int an_bi * server abort. */ if (res->flags & CF_SHUTR) { - if ((res->flags & CF_SHUTW_NOW) || (s->req->flags & CF_SHUTR)) + if ((s->req->flags & (CF_SHUTR|CF_SHUTW)) == (CF_SHUTR|CF_SHUTW)) goto aborted_xfer; if (!(s->flags & SN_ERR_MASK)) s->flags |= SN_ERR_SRVCL;