diff options
Diffstat (limited to 'src/event/ngx_event_close.c')
| -rw-r--r-- | src/event/ngx_event_close.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/event/ngx_event_close.c b/src/event/ngx_event_close.c index 0e3fe20c7..66a3693a7 100644 --- a/src/event/ngx_event_close.c +++ b/src/event/ngx_event_close.c @@ -11,21 +11,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_assert((c->fd != -1), return NGX_ERROR, c->log, "ngx_event_close: already closed"); ngx_destroy_pool(c->pool); + ngx_del_event(c->read, NGX_READ_EVENT, NGX_CLOSE_EVENT); + ngx_del_event(c->write, NGX_WRITE_EVENT, NGX_CLOSE_EVENT); + if ((rc = ngx_close_socket(c->fd)) == -1) ngx_log_error(NGX_LOG_ERR, c->log, ngx_socket_errno, "ngx_event_close: close failed"); - if (c->read->next) - ngx_del_event(c->read, NGX_READ_EVENT); - - if (c->write->next) - ngx_del_event(c->write, NGX_WRITE_EVENT); - c->fd = -1; return rc; |
