aboutsummaryrefslogtreecommitdiff
path: root/src/event/modules/ngx_kqueue_module.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2002-10-04 17:58:04 +0000
committerIgor Sysoev <igor@sysoev.ru>2002-10-04 17:58:04 +0000
commit2ba1ee0930adc22206cad54c46fc682485933963 (patch)
tree2ebfae2a782c4793eb8ba30609f4240661fc497f /src/event/modules/ngx_kqueue_module.c
parent31f8818eb110d18e58fef72684418c33ddbd7a0b (diff)
downloadnginx-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.c19
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;