diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2004-07-07 06:15:04 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2004-07-07 06:15:04 +0000 |
| commit | c78c41cefcf1e1fa8005f81b7c6cc0c857bcf46f (patch) | |
| tree | 167a534227a7b4203892a0bb1a493a7fd4af6279 /src/event/ngx_event_posted.c | |
| parent | 81a432a185bc61d46a4d5eb1f96773ee7b3dc6a3 (diff) | |
| download | nginx-c78c41cefcf1e1fa8005f81b7c6cc0c857bcf46f.tar.gz nginx-c78c41cefcf1e1fa8005f81b7c6cc0c857bcf46f.tar.bz2 | |
nginx-0.0.7-2004-07-07-10:15:04 import
Diffstat (limited to 'src/event/ngx_event_posted.c')
| -rw-r--r-- | src/event/ngx_event_posted.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/event/ngx_event_posted.c b/src/event/ngx_event_posted.c index b441b2918..ad3919add 100644 --- a/src/event/ngx_event_posted.c +++ b/src/event/ngx_event_posted.c @@ -100,6 +100,18 @@ ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle) continue; } + if (ev->lock != ev->own_lock) { + if (*(ev->own_lock)) { + ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, + "the own lock of the posted event " + PTR_FMT " is busy", ev); + ngx_unlock(ev->lock); + ev = ev->next; + continue; + } + *(ev->own_lock) = 1; + } + ngx_delete_posted_event(ev); ev->locked = 1; @@ -134,6 +146,10 @@ ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle) if (ev->locked) { ngx_unlock(ev->lock); + + if (ev->lock != ev->own_lock) { + ngx_unlock(ev->own_lock); + } } ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, |
