OPTIM: http: do not re-enable reading on client side while closing the server side

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.
This commit is contained in:
Willy Tarreau 2013-12-15 15:32:10 +01:00
parent 3f3997e6c6
commit 2e7a165899

View 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;
}