summaryrefslogtreecommitdiffhomepage
path: root/src/event
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/event/modules/ngx_epoll_module.c2
-rw-r--r--src/event/modules/ngx_kqueue_module.c22
-rw-r--r--src/event/modules/ngx_rtsig_module.c2
-rw-r--r--src/event/ngx_event.c4
-rw-r--r--src/event/ngx_event.h8
-rw-r--r--src/event/ngx_event_accept.c6
-rw-r--r--src/event/ngx_event_connect.c6
-rw-r--r--src/event/ngx_event_openssl.c1
8 files changed, 32 insertions, 19 deletions
diff --git a/src/event/modules/ngx_epoll_module.c b/src/event/modules/ngx_epoll_module.c
index 4067fd886..45791e9c7 100644
--- a/src/event/modules/ngx_epoll_module.c
+++ b/src/event/modules/ngx_epoll_module.c
@@ -173,7 +173,7 @@ static int ngx_epoll_init(ngx_cycle_t *cycle)
#else
ngx_event_flags = NGX_USE_LEVEL_EVENT
#endif
- |NGX_HAVE_GREEDY_EVENT
+ |NGX_USE_GREEDY_EVENT
|NGX_USE_EPOLL_EVENT;
return NGX_OK;
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index db5b75683..e6bebb559 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -194,10 +194,10 @@ static ngx_int_t ngx_kqueue_init(ngx_cycle_t *cycle)
#else
|NGX_USE_LEVEL_EVENT
#endif
-#if (HAVE_LOWAT_EVENT)
- |NGX_HAVE_LOWAT_EVENT
+#if (NGX_HAVE_LOWAT_EVENT)
+ |NGX_USE_LOWAT_EVENT
#endif
- |NGX_HAVE_KQUEUE_EVENT;
+ |NGX_USE_KQUEUE_EVENT;
return NGX_OK;
}
@@ -245,6 +245,8 @@ static ngx_int_t ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags)
return NGX_ERROR;
}
+#if 1
+
if (nchanges > 0
&& ev->index < (u_int) nchanges
&& ((uintptr_t) change_list[ev->index].udata & (uintptr_t) ~1)
@@ -262,7 +264,8 @@ static ngx_int_t ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags)
ngx_event_ident(ev->data), event);
if (ev->index < (u_int) --nchanges) {
- e = (ngx_event_t *) change_list[nchanges].udata;
+ e = (ngx_event_t *)
+ ((uintptr_t) change_list[nchanges].udata & (uintptr_t) ~1);
change_list[ev->index] = change_list[nchanges];
e->index = ev->index;
}
@@ -282,6 +285,8 @@ static ngx_int_t ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags)
return NGX_ERROR;
}
+#endif
+
rc = ngx_kqueue_set_event(ev, event, EV_ADD|EV_ENABLE|flags);
ngx_mutex_unlock(list_mutex);
@@ -302,6 +307,8 @@ static ngx_int_t ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags)
return NGX_ERROR;
}
+#if 1
+
if (nchanges > 0
&& ev->index < (u_int) nchanges
&& ((uintptr_t) change_list[ev->index].udata & (uintptr_t) ~1)
@@ -314,7 +321,8 @@ static ngx_int_t ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags)
/* if the event is still not passed to a kernel we will not pass it */
if (ev->index < (u_int) --nchanges) {
- e = (ngx_event_t *) change_list[nchanges].udata;
+ e = (ngx_event_t *)
+ ((uintptr_t) change_list[nchanges].udata & (uintptr_t) ~1);
change_list[ev->index] = change_list[nchanges];
e->index = ev->index;
}
@@ -324,6 +332,8 @@ static ngx_int_t ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags)
return NGX_OK;
}
+#endif
+
/*
* when the file descriptor is closed the kqueue automatically deletes
* its filters so we do not need to delete explicity the event
@@ -393,7 +403,7 @@ static ngx_int_t ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags)
kev->data = 0;
} else {
-#if (HAVE_LOWAT_EVENT)
+#if (NGX_HAVE_LOWAT_EVENT)
if (flags & NGX_LOWAT_EVENT) {
kev->fflags = NOTE_LOWAT;
kev->data = ev->available;
diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c
index 72c5b7c2d..4f2f48097 100644
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -158,7 +158,7 @@ static ngx_int_t ngx_rtsig_init(ngx_cycle_t *cycle)
ngx_event_actions = ngx_rtsig_module_ctx.actions;
- ngx_event_flags = NGX_USE_RTSIG_EVENT|NGX_HAVE_GREEDY_EVENT;
+ ngx_event_flags = NGX_USE_RTSIG_EVENT|NGX_USE_GREEDY_EVENT;
return NGX_OK;
}
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 4718dcd20..f006c6ba5 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -465,9 +465,9 @@ ngx_int_t ngx_send_lowat(ngx_connection_t *c, size_t lowat)
{
int sndlowat;
-#if (HAVE_LOWAT_EVENT)
+#if (NGX_HAVE_LOWAT_EVENT)
- if (ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) {
+ if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {
c->write->available = lowat;
return NGX_OK;
}
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h
index c173adc05..f341a14c6 100644
--- a/src/event/ngx_event.h
+++ b/src/event/ngx_event.h
@@ -240,19 +240,19 @@ extern ngx_event_actions_t ngx_event_actions;
* The event filter has kqueue features - the eof flag, errno,
* available data, etc.
*/
-#define NGX_HAVE_KQUEUE_EVENT 0x00000008
+#define NGX_USE_KQUEUE_EVENT 0x00000008
/*
* The event filter supports low water mark - kqueue's NOTE_LOWAT.
* kqueue in FreeBSD 4.1-4.2 has no NOTE_LOWAT so we need a separate flag.
*/
-#define NGX_HAVE_LOWAT_EVENT 0x00000010
+#define NGX_USE_LOWAT_EVENT 0x00000010
/*
* The event filter requires to do i/o operation until EAGAIN -
* epoll, rt signals.
*/
-#define NGX_HAVE_GREEDY_EVENT 0x00000020
+#define NGX_USE_GREEDY_EVENT 0x00000020
/*
* The event filter is epoll,
@@ -571,7 +571,7 @@ ngx_inline static int ngx_handle_write_event(ngx_event_t *wev, size_t lowat)
ngx_connection_t *c;
if (lowat) {
- c = wev->data;
+ c = (ngx_connection_t *) wev->data;
if (ngx_send_lowat(c, lowat) == NGX_ERROR) {
return NGX_ERROR;
diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c
index 5a5e0e170..9ae5ccd11 100644
--- a/src/event/ngx_event_accept.c
+++ b/src/event/ngx_event_accept.c
@@ -39,7 +39,7 @@ void ngx_event_accept(ngx_event_t *ev)
if (ngx_event_flags & NGX_USE_RTSIG_EVENT) {
ev->available = 1;
- } else if (!(ngx_event_flags & NGX_HAVE_KQUEUE_EVENT)) {
+ } else if (!(ngx_event_flags & NGX_USE_KQUEUE_EVENT)) {
ev->available = ecf->multi_accept;
}
@@ -118,7 +118,7 @@ void ngx_event_accept(ngx_event_t *ev)
ls->listening->addr_text.data);
if (err == NGX_ECONNABORTED) {
- if (ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) {
+ if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {
ev->available--;
}
@@ -342,7 +342,7 @@ void ngx_event_accept(ngx_event_t *ev)
ls->listening->handler(c);
- if (ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) {
+ if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {
ev->available--;
}
diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c
index c1e6c1935..b41eca771 100644
--- a/src/event/ngx_event_connect.c
+++ b/src/event/ngx_event_connect.c
@@ -296,6 +296,9 @@ int ngx_event_connect_peer(ngx_peer_connection_t *pc)
if (ngx_event_flags & NGX_USE_AIO_EVENT) {
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, pc->log, ngx_socket_errno,
+ "connect(): %d", rc);
+
/* aio, iocp */
if (ngx_blocking(s) == -1) {
@@ -311,8 +314,7 @@ int ngx_event_connect_peer(ngx_peer_connection_t *pc)
}
/*
- * aio allows to post operation on non-connected socket
- * at least in FreeBSD.
+ * FreeBSD aio allows to post operation on non-connected socket.
* NT does not support it.
*
* TODO: check in Win32, etc. As workaround we can use NGX_ONESHOT_EVENT
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 151cc429f..7a7038d4f 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -86,6 +86,7 @@ ngx_int_t ngx_ssl_recv(ngx_connection_t *c, u_char *buf, size_t size)
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_get_error: %d", sslerr);
if (sslerr == SSL_ERROR_WANT_READ) {
+ c->read->ready = 0;
return NGX_AGAIN;
}