From: Willy Tarreau Date: Fri, 22 Jan 2010 13:41:29 +0000 (+0100) Subject: [OPTIM] http: don't delay response if next request is incomplete X-Git-Tag: v1.4-dev7~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ff7b5883c002adfe9dd6ba052f5b2e293f173070;p=thirdparty%2Fhaproxy.git [OPTIM] http: don't delay response if next request is incomplete We use to delay the response if there is a new request in the buffer. However, if the pending request is incomplete, we should not delay the pending responses. --- diff --git a/src/proto_http.c b/src/proto_http.c index c9d4124835..47b67e8994 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -2260,6 +2260,7 @@ int http_wait_for_request(struct session *s, struct buffer *req, int an_bit) if (s->rep->send_max) { /* don't let a connection request be initiated */ buffer_dont_connect(req); + s->rep->flags &= ~BF_EXPECT_MORE; /* speed up sending a previous response */ return 0; } } @@ -2395,6 +2396,7 @@ int http_wait_for_request(struct session *s, struct buffer *req, int an_bit) buffer_dont_connect(req); req->flags |= BF_READ_DONTWAIT; /* try to get back here ASAP */ + s->rep->flags &= ~BF_EXPECT_MORE; /* speed up sending a previous response */ if ((msg->msg_state != HTTP_MSG_RQBEFORE) && (txn->flags & TX_WAIT_NEXT_RQ)) { /* If the client starts to talk, let's fall back to @@ -2427,6 +2429,7 @@ int http_wait_for_request(struct session *s, struct buffer *req, int an_bit) msg->msg_state = HTTP_MSG_RQBEFORE; req->analysers = 0; s->logs.logwait = 0; + s->rep->flags &= ~BF_EXPECT_MORE; /* speed up sending a previous response */ stream_int_retnclose(req->prod, NULL); return 0; }