mirror of
https://github.com/nginx/nginx.git
synced 2024-12-12 02:09:04 +08:00
Use "client_header_timeout" for all requests in a connection.
Previously, only the first request in a connection used timeout value from the "client_header_timeout" directive while reading header. All subsequent requests used "keepalive_timeout" for that. It happened because timeout of the read event was set to the value of "keepalive_timeout" in ngx_http_set_keepalive(), but was not removed when the next request arrived.
This commit is contained in:
parent
a46a3ab68d
commit
3e5aaee828
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user