Mercurial > hg > nginx
diff src/event/modules/ngx_kqueue_module.c @ 374:213f17e9f776
nginx-0.0.7-2004-07-02-09:47:00 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 02 Jul 2004 05:47:00 +0000 |
parents | 018569a8f09c |
children | 744ccb59062d |
line wrap: on
line diff
--- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -236,7 +236,12 @@ static ngx_int_t ngx_kqueue_del_event(ng ev->active = 0; ev->disabled = 0; + + if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { + return NGX_ERROR; + } ev->posted = 0; + ngx_mutex_unlock(ngx_posted_events_mutex); if (ngx_thread_main() && nchanges > 0 @@ -519,10 +524,24 @@ static ngx_int_t ngx_kqueue_process_even continue; } + if (ev->log && (ev->log->log_level & NGX_LOG_DEBUG_CONNECTION)) { + ngx_kqueue_dump_event(ev->log, &event_list[i]); + } + ev->returned_instance = instance; - if (ev->log && (ev->log->log_level & NGX_LOG_DEBUG_CONNECTION)) { - ngx_kqueue_dump_event(ev->log, &event_list[i]); + if (!ev->accept && (ngx_threaded || ngx_accept_mutex_held)) { + ev->posted_ready = 1; + ev->posted_available += event_list[i].data; + + if (event_list[i].flags & EV_EOF) { + ev->posted_eof = 1; + ev->posted_errno = event_list[i].fflags; + } + + ngx_post_event(ev); + + continue; } ev->available = event_list[i].data; @@ -532,10 +551,6 @@ static ngx_int_t ngx_kqueue_process_even ev->kq_errno = event_list[i].fflags; } - if (ev->oneshot && ev->timer_set) { - ngx_del_timer(ev); - } - ev->ready = 1; break; @@ -563,10 +578,12 @@ static ngx_int_t ngx_kqueue_process_even continue; } +#if 0 if (!ev->accept) { ngx_post_event(ev); continue; } +#endif if (ngx_accept_disabled > 0) { continue;