Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/http/ngx_http_request.c')
-rw-r--r--src/http/ngx_http_request.c101
1 files changed, 1 insertions, 100 deletions
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index 52c7c4256..dcf53d746 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -1899,109 +1899,10 @@ void ngx_ssl_close_handler(ngx_event_t *ev)
void ngx_http_close_connection(ngx_connection_t *c)
{
- ngx_socket_t fd;
-
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
"close http connection: %d", c->fd);
- if (c->pool == NULL) {
- ngx_log_error(NGX_LOG_ALERT, c->log, 0, "connection already closed");
- return;
- }
-
-#if (NGX_HTTP_SSL)
-
- if (c->ssl) {
- if (ngx_ssl_shutdown(c) == NGX_AGAIN) {
- c->read->event_handler = ngx_ssl_close_handler;
- c->write->event_handler = ngx_ssl_close_handler;
- return;
- }
- }
-
-#endif
-
- if (c->read->timer_set) {
- ngx_del_timer(c->read);
- }
-
- if (c->write->timer_set) {
- ngx_del_timer(c->write);
- }
-
- if (ngx_del_conn) {
- ngx_del_conn(c, NGX_CLOSE_EVENT);
-
- } else {
- if (c->read->active || c->read->disabled) {
- ngx_del_event(c->read, NGX_READ_EVENT, NGX_CLOSE_EVENT);
- }
-
- if (c->write->active || c->write->disabled) {
- ngx_del_event(c->write, NGX_WRITE_EVENT, NGX_CLOSE_EVENT);
- }
- }
-
- /*
- * we have to clean the connection information before the closing
- * because another thread may reopen the same file descriptor
- * before we clean the connection
- */
-
-#if (NGX_THREADS)
-
- if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_OK) {
-
- if (c->read->prev) {
- ngx_delete_posted_event(c->read);
- }
-
- if (c->write->prev) {
- ngx_delete_posted_event(c->write);
- }
-
- c->read->closed = 1;
- c->write->closed = 1;
-
- if (c->single_connection) {
- ngx_unlock(&c->lock);
- c->read->locked = 0;
- c->write->locked = 0;
- }
-
- ngx_mutex_unlock(ngx_posted_events_mutex);
- }
-
-#else
-
- if (c->read->prev) {
- ngx_delete_posted_event(c->read);
- }
-
- if (c->write->prev) {
- ngx_delete_posted_event(c->write);
- }
-
- c->read->closed = 1;
- c->write->closed = 1;
-
-#endif
-
- fd = c->fd;
- c->fd = (ngx_socket_t) -1;
- c->data = NULL;
-
- ngx_destroy_pool(c->pool);
-
- if (ngx_close_socket(fd) == -1) {
-
- /* we use ngx_cycle->log because c->log was in c->pool */
-
- ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno,
- ngx_close_socket_n " failed");
- }
-
- return;
+ ngx_close_connection(c);
}