aboutsummaryrefslogtreecommitdiff
path: root/src/event/ngx_event_close.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/event/ngx_event_close.c')
-rw-r--r--src/event/ngx_event_close.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/event/ngx_event_close.c b/src/event/ngx_event_close.c
index 8c8fd1bef..06e911759 100644
--- a/src/event/ngx_event_close.c
+++ b/src/event/ngx_event_close.c
@@ -13,15 +13,20 @@ int ngx_event_close_connection(ngx_event_t *ev)
int rc;
ngx_connection_t *c = (ngx_connection_t *) ev->data;
- ngx_log_debug(c->log, "CLOSE: %d" _ c->fd);
+ ngx_log_debug(c->log, "close connection: %d" _ c->fd);
ngx_assert((c->fd != -1), return NGX_ERROR, c->log,
"ngx_event_close: already closed");
- ngx_destroy_pool(c->pool);
+ if (c->read->timer_set) {
+ ngx_del_timer(c->read);
+ c->read->timer_set = 0;
+ }
- ngx_del_timer(c->read);
- ngx_del_timer(c->write);
+ if (c->write->timer_set) {
+ ngx_del_timer(c->write);
+ c->write->timer_set = 0;
+ }
ngx_del_event(c->read, NGX_READ_EVENT, NGX_CLOSE_EVENT);
ngx_del_event(c->write, NGX_WRITE_EVENT, NGX_CLOSE_EVENT);
@@ -32,5 +37,7 @@ int ngx_event_close_connection(ngx_event_t *ev)
c->fd = -1;
+ ngx_destroy_pool(c->pool);
+
return rc;
}