diff options
author | Igor Sysoev <igor@sysoev.ru> | 2002-09-12 14:42:29 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2002-09-12 14:42:29 +0000 |
commit | 3a40d48164f13be2ddfc2ed84e593edc40d12a1c (patch) | |
tree | 591342422899073c8e16cf0bb72a64a2d840935c /src/event/modules/ngx_kqueue_module.c | |
parent | e0268b95c6dea75f88d3874213b1aa0cd0aba692 (diff) | |
download | nginx-3a40d48164f13be2ddfc2ed84e593edc40d12a1c.tar.gz nginx-3a40d48164f13be2ddfc2ed84e593edc40d12a1c.zip |
nginx-0.0.1-2002-09-12-18:42:29 import
Diffstat (limited to 'src/event/modules/ngx_kqueue_module.c')
-rw-r--r-- | src/event/modules/ngx_kqueue_module.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c index efa573ca0..e88b4749d 100644 --- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -57,6 +57,8 @@ void ngx_kqueue_init(int max_connections, ngx_log_t *log) int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags) { + ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1: 0; + return ngx_kqueue_set_event(ev, event, EV_ADD | flags); } @@ -186,6 +188,9 @@ int ngx_kqueue_process_events(ngx_log_t *log) ev->error = event_list[i].fflags; } + if (ev->oneshot) + ngx_del_timer(ev); + if (ev->event_handler(ev) == NGX_ERROR) ev->close_handler(ev); @@ -207,6 +212,9 @@ void ngx_kqueue_add_timer(ngx_event_t *ev, ngx_msec_t timer) ngx_log_debug(ev->log, "set timer: %d" _ timer); + ngx_assert((!ev->timer_next && !ev->timer_prev), return, ev->log, + "timer already set"); + for (e = timer_queue.timer_next; e != &timer_queue && timer > e->timer_delta; e = e->timer_next) |