]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: http: don't report server aborts as client aborts
authorWilly Tarreau <w@1wt.eu>
Wed, 23 Apr 2014 18:29:01 +0000 (20:29 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 23 Apr 2014 18:29:01 +0000 (20:29 +0200)
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.

src/proto_http.c

index 1e038f46134cdadc04a115cb3efd283628657512..5e14d58f6e9be625f7775a5b843b06c291498822 100644 (file)
@@ -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;