]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
OPTIM: http: do not re-enable reading on client side while closing the server side
authorWilly Tarreau <w@1wt.eu>
Sun, 15 Dec 2013 14:32:10 +0000 (15:32 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 16 Dec 2013 01:23:53 +0000 (02:23 +0100)
It's common to observe a an recv() call on the client side just after
the connect() to has been issued to the server side when running in
server close mode. The reason is that the whole request has been sent
and the shutw() has been queued in the channel, so the request message
switches to the MSG_CLOSED state, which didn't disable reading. Let's
do it now. That way the reading will only be re-enabled after the
response is transferred to the client. However if abortonclose is set,
we still leave it enabled.

src/proto_http.c

index 2fcff7186dac3399ae50d3789241448da8c2791b..a459c53bca9a8998e9ca12e1fb4f2b9795156852 100644 (file)
@@ -4496,6 +4496,8 @@ int http_sync_req_state(struct session *s)
 
        if (txn->req.msg_state == HTTP_MSG_CLOSED) {
        http_msg_closed:
+               if (!(s->be->options & PR_O_ABRT_CLOSE))
+                       channel_dont_read(chn);
                goto wait_other_side;
        }