mirror of
https://github.com/nginx/nginx.git
synced 2024-12-12 18:29:00 +08:00
Allow to reuse connections that wait their first request.
This should improve behavior under deficiency of connections. Since SSL handshake usually takes significant amount of time, we exclude connections from reusable queue during this period to avoid premature flush of them.
This commit is contained in:
parent
3f70ddcfc6
commit
23e692b58d
@ -355,6 +355,7 @@ ngx_http_init_connection(ngx_connection_t *c)
|
||||
}
|
||||
|
||||
ngx_add_timer(rev, c->listening->post_accept_timeout);
|
||||
ngx_reusable_connection(c, 1);
|
||||
|
||||
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
|
||||
ngx_http_close_connection(c);
|
||||
@ -383,6 +384,11 @@ ngx_http_wait_request_handler(ngx_event_t *rev)
|
||||
return;
|
||||
}
|
||||
|
||||
if (c->close) {
|
||||
ngx_http_close_connection(c);
|
||||
return;
|
||||
}
|
||||
|
||||
hc = c->data;
|
||||
cscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_core_module);
|
||||
|
||||
@ -432,6 +438,7 @@ ngx_http_wait_request_handler(ngx_event_t *rev)
|
||||
|
||||
if (!rev->timer_set) {
|
||||
ngx_add_timer(rev, c->listening->post_accept_timeout);
|
||||
ngx_reusable_connection(c, 1);
|
||||
}
|
||||
|
||||
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
|
||||
@ -466,6 +473,8 @@ ngx_http_wait_request_handler(ngx_event_t *rev)
|
||||
|
||||
c->log->action = "reading client request line";
|
||||
|
||||
ngx_reusable_connection(c, 0);
|
||||
|
||||
c->data = ngx_http_create_request(c);
|
||||
if (c->data == NULL) {
|
||||
ngx_http_close_connection(c);
|
||||
@ -611,6 +620,11 @@ ngx_http_ssl_handshake(ngx_event_t *rev)
|
||||
return;
|
||||
}
|
||||
|
||||
if (c->close) {
|
||||
ngx_http_close_connection(c);
|
||||
return;
|
||||
}
|
||||
|
||||
n = recv(c->fd, (char *) buf, 1, MSG_PEEK);
|
||||
|
||||
err = ngx_socket_errno;
|
||||
@ -631,6 +645,7 @@ ngx_http_ssl_handshake(ngx_event_t *rev)
|
||||
|
||||
if (!rev->timer_set) {
|
||||
ngx_add_timer(rev, c->listening->post_accept_timeout);
|
||||
ngx_reusable_connection(c, 1);
|
||||
}
|
||||
|
||||
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
|
||||
@ -670,6 +685,8 @@ ngx_http_ssl_handshake(ngx_event_t *rev)
|
||||
ngx_add_timer(rev, c->listening->post_accept_timeout);
|
||||
}
|
||||
|
||||
ngx_reusable_connection(c, 0);
|
||||
|
||||
c->ssl->handler = ngx_http_ssl_handshake_handler;
|
||||
return;
|
||||
}
|
||||
@ -714,6 +731,8 @@ ngx_http_ssl_handshake_handler(ngx_connection_t *c)
|
||||
c->read->handler = ngx_http_wait_request_handler;
|
||||
/* STUB: epoll edge */ c->write->handler = ngx_http_empty_handler;
|
||||
|
||||
ngx_reusable_connection(c, 1);
|
||||
|
||||
ngx_http_wait_request_handler(c->read);
|
||||
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user