diff options
Diffstat (limited to 'src/event/modules/ngx_rtsig_module.c')
| -rw-r--r-- | src/event/modules/ngx_rtsig_module.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c index 22243f52c..e5f632a2a 100644 --- a/src/event/modules/ngx_rtsig_module.c +++ b/src/event/modules/ngx_rtsig_module.c @@ -221,15 +221,21 @@ int ngx_rtsig_process_events(ngx_cycle_t *cycle) expire = 1; if (ngx_accept_mutex) { - if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) { - return NGX_ERROR; - } + if (ngx_accept_disabled > 0) { + ngx_accept_disabled--; + + } else { + if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) { + return NGX_ERROR; + } - if (ngx_accept_mutex_held == 0 - && (timer == NGX_TIMER_INFINITE || timer > ngx_accept_mutex_delay)) - { - timer = ngx_accept_mutex_delay; - expire = 0; + if (ngx_accept_mutex_held == 0 + && (timer == NGX_TIMER_INFINITE + || timer > ngx_accept_mutex_delay)) + { + timer = ngx_accept_mutex_delay; + expire = 0; + } } } @@ -299,7 +305,9 @@ int ngx_rtsig_process_events(ngx_cycle_t *cycle) c->read->event_handler(c->read); } else if (c->read->accept) { - c->read->event_handler(c->read); + if (ngx_accept_disabled > 0) { + c->read->event_handler(c->read); + } } else { if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { @@ -367,7 +375,6 @@ int ngx_rtsig_process_events(ngx_cycle_t *cycle) return NGX_ERROR; } - ngx_accept_mutex_unlock(); if (expire && delta) { |
