aboutsummaryrefslogtreecommitdiff
path: root/src/http/ngx_http_request.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/http/ngx_http_request.c')
-rw-r--r--src/http/ngx_http_request.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index 3db2a4398..68cb34562 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -2736,8 +2736,6 @@ ngx_http_set_keepalive(ngx_http_request_t *r)
c->data = hc;
- ngx_add_timer(rev, clcf->keepalive_timeout);
-
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
ngx_http_close_connection(c);
return;
@@ -2753,6 +2751,10 @@ ngx_http_set_keepalive(ngx_http_request_t *r)
hc->pipeline = 1;
c->log->action = "reading client pipelined request line";
+ if (rev->timer_set) {
+ ngx_del_timer(rev);
+ }
+
rev->handler = ngx_http_init_request;
ngx_post_event(rev, &ngx_posted_events);
return;
@@ -2872,6 +2874,8 @@ ngx_http_set_keepalive(ngx_http_request_t *r)
c->idle = 1;
ngx_reusable_connection(c, 1);
+ ngx_add_timer(rev, clcf->keepalive_timeout);
+
if (rev->ready) {
ngx_post_event(rev, &ngx_posted_events);
}
@@ -2993,6 +2997,8 @@ ngx_http_keepalive_handler(ngx_event_t *rev)
c->idle = 0;
ngx_reusable_connection(c, 0);
+ ngx_del_timer(rev);
+
ngx_http_init_request(rev);
}