diff options
Diffstat (limited to 'usr.sbin/nginx/src/event/modules/ngx_epoll_module.c')
| -rw-r--r-- | usr.sbin/nginx/src/event/modules/ngx_epoll_module.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/usr.sbin/nginx/src/event/modules/ngx_epoll_module.c b/usr.sbin/nginx/src/event/modules/ngx_epoll_module.c index 31c10c6dc86..ddf178927b4 100644 --- a/usr.sbin/nginx/src/event/modules/ngx_epoll_module.c +++ b/usr.sbin/nginx/src/event/modules/ngx_epoll_module.c @@ -1,6 +1,7 @@ /* * Copyright (C) Igor Sysoev + * Copyright (C) Nginx, Inc. */ @@ -683,6 +684,18 @@ ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) if ((revents & EPOLLOUT) && wev->active) { + if (c->fd == -1 || wev->instance != instance) { + + /* + * the stale event from a file descriptor + * that was just closed in this iteration + */ + + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, + "epoll: stale event %p", c); + continue; + } + if (flags & NGX_POST_THREAD_EVENTS) { wev->posted_ready = 1; |
