mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -06: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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user