summaryrefslogtreecommitdiffhomepage
path: root/src/event
diff options
context:
space:
mode:
Diffstat (limited to 'src/event')
-rw-r--r--src/event/modules/ngx_kqueue_module.c18
-rw-r--r--src/event/ngx_event.c2
-rw-r--r--src/event/ngx_event.h2
3 files changed, 15 insertions, 7 deletions
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index 4e82162a4..e3c9e3a4f 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -27,8 +27,9 @@ static ngx_event_t timer_queue;
int ngx_kqueue_init(int max_connections, ngx_log_t *log)
{
- int size = sizeof(struct kevent) * 512;
+ int size;
+ size = sizeof(struct kevent) * 512;
nchanges = 0;
nevents = 512;
@@ -68,8 +69,9 @@ int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags)
{
ngx_event_t *e;
- if (ev->index < nchanges && change_list[ev->index].udata == ev) {
-
+ if (nchanges > 0 && ev->index < nchanges
+ && change_list[ev->index].udata == ev)
+ {
ngx_connection_t *cn = (ngx_connection_t *) ev->data;
ngx_log_debug(ev->log, "kqueue del event: %d: ft:%d" _
cn->fd _ event);
@@ -92,8 +94,10 @@ int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags)
int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags)
{
- struct timespec ts = { 0, 0 };
- ngx_connection_t *cn = (ngx_connection_t *) ev->data;
+ struct timespec ts;
+ ngx_connection_t *cn;
+
+ cn = (ngx_connection_t *) ev->data;
ngx_log_debug(ev->log, "kqueue set event: %d: ft:%d f:%08x" _
cn->fd _ filter _ flags);
@@ -102,6 +106,9 @@ int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags)
ngx_log_error(NGX_LOG_WARN, ev->log, 0,
"kqueue change list is filled up");
+ ts.tv_sec = 0;
+ ts.tv_nsec = 0;
+
if (kevent(kq, change_list, nchanges, NULL, 0, &ts) == -1) {
ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno, "kevent failed");
return NGX_ERROR;
@@ -149,6 +156,7 @@ int ngx_kqueue_process_events(ngx_log_t *log)
ngx_log_debug(log, "kevent timer: %d" _ timer);
events = kevent(kq, change_list, nchanges, event_list, nevents, tp);
+
if (events == -1) {
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "kevent failed");
return NGX_ERROR;
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 763b8f8d2..8517e644a 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -22,7 +22,7 @@ ngx_event_t *ngx_read_events, *ngx_write_events;
#if !(USE_KQUEUE)
-#if 1
+#if 0
ngx_event_type_e ngx_event_type = NGX_SELECT_EVENT;
#else
ngx_event_type_e ngx_event_type = NGX_KQUEUE_EVENT;
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h
index 1748e9a64..6aa01660b 100644
--- a/src/event/ngx_event.h
+++ b/src/event/ngx_event.h
@@ -135,7 +135,7 @@ NGX_CLOSE_EVENT kqueue: kqueue deletes events for file that closed
#define ngx_init_events ngx_kqueue_init
#define ngx_process_events ngx_kqueue_process_events
#define ngx_add_event ngx_kqueue_add_event
-#define ngx_del_event ngx_kqueue_add_event
+#define ngx_del_event ngx_kqueue_del_event
#define ngx_add_timer ngx_kqueue_add_timer
#define ngx_event_recv ngx_event_recv_core