diff options
author | Igor Sysoev <igor@sysoev.ru> | 2002-10-04 17:58:04 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2002-10-04 17:58:04 +0000 |
commit | 2ba1ee0930adc22206cad54c46fc682485933963 (patch) | |
tree | 2ebfae2a782c4793eb8ba30609f4240661fc497f /src/event/modules/ngx_kqueue_module.c | |
parent | 31f8818eb110d18e58fef72684418c33ddbd7a0b (diff) | |
download | nginx-2ba1ee0930adc22206cad54c46fc682485933963.tar.gz nginx-2ba1ee0930adc22206cad54c46fc682485933963.zip |
nginx-0.0.1-2002-10-04-21:58:04 import
Diffstat (limited to 'src/event/modules/ngx_kqueue_module.c')
-rw-r--r-- | src/event/modules/ngx_kqueue_module.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c index aad8581a9..3b65f8063 100644 --- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -2,10 +2,6 @@ * Copyright (C) 2002 Igor Sysoev, http://sysoev.ru */ -/* - NEED ? : unify change_list and event_list: - event_list = change_list; -*/ #include <ngx_config.h> #include <ngx_core.h> @@ -66,6 +62,17 @@ int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags) int ngx_kqueue_del_event(ngx_event_t *ev, int event) { + ngx_event_t *e; + + if (ev->index <= nchanges && change_list[ev->index].udata == ev) { + change_list[ev->index] = change_list[nchanges]; + e = (ngx_event_t *) change_list[ev->index].udata; + e->index = ev->index; + nchanges--; + + return NGX_OK; + } + return ngx_kqueue_set_event(ev, event, EV_DELETE); } @@ -94,6 +101,10 @@ int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags) change_list[nchanges].fflags = 0; change_list[nchanges].data = 0; change_list[nchanges].udata = ev; + + if (flags == EV_ADD) + ev->index = nchanges; + nchanges++; return NGX_OK; |