From ff7b5883c002adfe9dd6ba052f5b2e293f173070 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 22 Jan 2010 14:41:29 +0100 Subject: [PATCH] [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. --- src/proto_http.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/proto_http.c b/src/proto_http.c index c9d412483..47b67e899 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; }