summaryrefslogtreecommitdiffhomepage
path: root/src/event/modules
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/event/modules/ngx_aio_module.c4
-rw-r--r--src/event/modules/ngx_devpoll_module.c12
-rw-r--r--src/event/modules/ngx_epoll_module.c14
-rw-r--r--src/event/modules/ngx_iocp_module.c100
-rw-r--r--src/event/modules/ngx_kqueue_module.c9
-rw-r--r--src/event/modules/ngx_poll_module.c12
-rw-r--r--src/event/modules/ngx_rtsig_module.c4
-rw-r--r--src/event/modules/ngx_select_module.c24
8 files changed, 111 insertions, 68 deletions
diff --git a/src/event/modules/ngx_aio_module.c b/src/event/modules/ngx_aio_module.c
index 483d6752b..398c57102 100644
--- a/src/event/modules/ngx_aio_module.c
+++ b/src/event/modules/ngx_aio_module.c
@@ -110,6 +110,10 @@ static int ngx_aio_del_connection(ngx_connection_t *c, u_int flags)
return NGX_OK;
}
+ if (flags & NGX_CLOSE_EVENT) {
+ return NGX_OK;
+ }
+
rc = aio_cancel(c->fd, NULL);
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "aio_cancel: %d", rc);
diff --git a/src/event/modules/ngx_devpoll_module.c b/src/event/modules/ngx_devpoll_module.c
index ea1d19b20..663e2bfef 100644
--- a/src/event/modules/ngx_devpoll_module.c
+++ b/src/event/modules/ngx_devpoll_module.c
@@ -208,7 +208,7 @@ static int ngx_devpoll_add_event(ngx_event_t *ev, int event, u_int flags)
#if (NGX_DEBUG)
c = ev->data;
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
- "devpoll add event: fd:%d ev:%04X", c->fd, event);
+ "devpoll add event: fd:%d ev:%04Xd", c->fd, event);
#endif
ev->active = 1;
@@ -229,7 +229,7 @@ static int ngx_devpoll_del_event(ngx_event_t *ev, int event, u_int flags)
#endif
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
- "devpoll del event: fd:%d ev:%04X", c->fd, event);
+ "devpoll del event: fd:%d ev:%04Xd", c->fd, event);
if (ngx_devpoll_set_event(ev, POLLREMOVE, flags) == NGX_ERROR) {
return NGX_ERROR;
@@ -268,7 +268,7 @@ static int ngx_devpoll_set_event(ngx_event_t *ev, int event, u_int flags)
c = ev->data;
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
- "devpoll fd:%d ev:%04X fl:%04X", c->fd, event, flags);
+ "devpoll fd:%d ev:%04Xd fl:%04Xd", c->fd, event, flags);
if (nchanges >= max_changes) {
ngx_log_error(NGX_LOG_WARN, ev->log, 0,
@@ -453,13 +453,13 @@ int ngx_devpoll_process_events(ngx_cycle_t *cycle)
}
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "devpoll: fd:%d, ev:%04X, rev:%04X",
+ "devpoll: fd:%d, ev:%04Xd, rev:%04Xd",
event_list[i].fd,
event_list[i].events, event_list[i].revents);
if (event_list[i].revents & (POLLERR|POLLHUP|POLLNVAL)) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- "ioctl(DP_POLL) error fd:%d ev:%04X rev:%04X",
+ "ioctl(DP_POLL) error fd:%d ev:%04Xd rev:%04Xd",
event_list[i].fd,
event_list[i].events, event_list[i].revents);
}
@@ -468,7 +468,7 @@ int ngx_devpoll_process_events(ngx_cycle_t *cycle)
{
ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
"strange ioctl(DP_POLL) events "
- "fd:%d ev:%04X rev:%04X",
+ "fd:%d ev:%04Xd rev:%04Xd",
event_list[i].fd,
event_list[i].events, event_list[i].revents);
}
diff --git a/src/event/modules/ngx_epoll_module.c b/src/event/modules/ngx_epoll_module.c
index 45791e9c7..8096932ec 100644
--- a/src/event/modules/ngx_epoll_module.c
+++ b/src/event/modules/ngx_epoll_module.c
@@ -232,7 +232,7 @@ static int ngx_epoll_add_event(ngx_event_t *ev, int event, u_int flags)
ee.data.ptr = (void *) ((uintptr_t) c | ev->instance);
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
- "epoll add event: fd:%d op:%d ev:%08X",
+ "epoll add event: fd:%d op:%d ev:%08XD",
c->fd, op, ee.events);
if (epoll_ctl(ep, op, c->fd, &ee) == -1) {
@@ -291,7 +291,7 @@ static int ngx_epoll_del_event(ngx_event_t *ev, int event, u_int flags)
}
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
- "epoll del event: fd:%d op:%d ev:%08X",
+ "epoll del event: fd:%d op:%d ev:%08XD",
c->fd, op, ee.events);
if (epoll_ctl(ep, op, c->fd, &ee) == -1) {
@@ -314,7 +314,7 @@ static int ngx_epoll_add_connection(ngx_connection_t *c)
ee.data.ptr = (void *) ((uintptr_t) c | c->read->instance);
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
- "epoll add connection: fd:%d ev:%08X", c->fd, ee.events);
+ "epoll add connection: fd:%d ev:%08XD", c->fd, ee.events);
if (epoll_ctl(ep, EPOLL_CTL_ADD, c->fd, &ee) == -1) {
ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
@@ -513,7 +513,7 @@ int ngx_epoll_process_events(ngx_cycle_t *cycle)
*/
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "epoll: stale event " PTR_FMT, c);
+ "epoll: stale event %p", c);
continue;
}
@@ -522,18 +522,18 @@ int ngx_epoll_process_events(ngx_cycle_t *cycle)
#endif
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0,
- "epoll: fd:%d ev:%04X d:" PTR_FMT,
+ "epoll: fd:%d ev:%04XD d:%p",
c->fd, event_list[i].events, event_list[i].data);
if (event_list[i].events & (EPOLLERR|EPOLLHUP)) {
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0,
- "epoll_wait() error on fd:%d ev:%04X",
+ "epoll_wait() error on fd:%d ev:%04XD",
c->fd, event_list[i].events);
}
if (event_list[i].events & ~(EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP)) {
ngx_log_error(NGX_LOG_ALERT, log, 0,
- "strange epoll_wait() events fd:%d ev:%04X",
+ "strange epoll_wait() events fd:%d ev:%04XD",
c->fd, event_list[i].events);
}
diff --git a/src/event/modules/ngx_iocp_module.c b/src/event/modules/ngx_iocp_module.c
index 1d15c93f8..4a3cd9fe9 100644
--- a/src/event/modules/ngx_iocp_module.c
+++ b/src/event/modules/ngx_iocp_module.c
@@ -82,7 +82,7 @@ ngx_os_io_t ngx_iocp_io = {
ngx_overlapped_wsarecv,
NULL,
NULL,
- ngx_wsasend_chain,
+ ngx_overlapped_wsasend_chain,
0
};
@@ -138,7 +138,7 @@ static ngx_int_t ngx_iocp_add_event(ngx_event_t *ev, int event, u_int key)
c->write->active = 1;
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
- "iocp add: fd:%d k:%d ov:" PTR_FMT, c->fd, key, &ev->ovlp);
+ "iocp add: fd:%d k:%d ov:%p", c->fd, key, &ev->ovlp);
if (CreateIoCompletionPort((HANDLE) c->fd, iocp, key, 0) == NULL) {
ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
@@ -152,10 +152,16 @@ static ngx_int_t ngx_iocp_add_event(ngx_event_t *ev, int event, u_int key)
static ngx_int_t ngx_iocp_del_connection(ngx_connection_t *c, u_int flags)
{
+#if 0
+ if (flags & NGX_CLOSE_EVENT) {
+ return NGX_OK;
+ }
+
if (CancelIo((HANDLE) c->fd) == 0) {
ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno, "CancelIo() failed");
return NGX_ERROR;
}
+#endif
return NGX_OK;
}
@@ -195,12 +201,19 @@ static ngx_int_t ngx_iocp_process_events(ngx_cycle_t *cycle)
ngx_time_update(tv.tv_sec);
ngx_log_debug4(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "iocp: %d b:%d k:%d ov:" PTR_FMT, rc, bytes, key, ovlp);
+ "iocp: %d b:%d k:%d ov:%p", rc, bytes, key, ovlp);
delta = ngx_elapsed_msec;
ngx_elapsed_msec = (ngx_epoch_msec_t) tv.tv_sec * 1000
+ tv.tv_usec / 1000 - ngx_start_msec;
+ if (timer != INFINITE) {
+ delta = ngx_elapsed_msec - delta;
+
+ ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "iocp timer: %d, delta: %d", timer, (int) delta);
+ }
+
if (err) {
if (ovlp == NULL) {
if (err != WAIT_TIMEOUT) {
@@ -210,49 +223,76 @@ static ngx_int_t ngx_iocp_process_events(ngx_cycle_t *cycle)
return NGX_ERROR;
}
- } else {
- ovlp->error = err;
+ if (timer != INFINITE && delta) {
+ ngx_event_expire_timers((ngx_msec_t) delta);
+ }
+
+ return NGX_OK;
}
- }
- if (timer != INFINITE) {
- delta = ngx_elapsed_msec - delta;
+ ovlp->error = err;
+ }
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "iocp timer: %d, delta: %d", timer, (int) delta);
+ if (ovlp == NULL) {
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
+ "GetQueuedCompletionStatus() returned no operation");
+ return NGX_ERROR;
}
- if (ovlp) {
- ev = ovlp->event;
- ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "iocp event:" PTR_FMT, ev);
+ ev = ovlp->event;
- switch (key) {
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, err, "iocp event:%p", ev);
- case NGX_IOCP_ACCEPT:
- if (bytes) {
- ev->ready = 1;
- }
- break;
- case NGX_IOCP_IO:
- ev->complete = 1;
- ev->ready = 1;
- break;
+ if (err == ERROR_NETNAME_DELETED /* the socket was closed */
+ || err == ERROR_OPERATION_ABORTED /* the operation was canceled */)
+ {
- case NGX_IOCP_CONNECT:
- ev->ready = 1;
+ /*
+ * the WSA_OPERATION_ABORTED completion notification
+ * for a file descriptor that was closed
+ */
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, err,
+ "iocp: aborted event %p", ev);
+
+ if (timer != INFINITE && delta) {
+ ngx_event_expire_timers((ngx_msec_t) delta);
}
- ev->available = bytes;
+ return NGX_OK;
+ }
- ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "iocp event handler: " PTR_FMT, ev->event_handler);
+ if (err) {
+ ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
+ "GetQueuedCompletionStatus() returned operation error");
+ }
- ev->event_handler(ev);
+ switch (key) {
+
+ case NGX_IOCP_ACCEPT:
+ if (bytes) {
+ ev->ready = 1;
+ }
+ break;
+
+ case NGX_IOCP_IO:
+ ev->complete = 1;
+ ev->ready = 1;
+ break;
+
+ case NGX_IOCP_CONNECT:
+ ev->ready = 1;
}
+ ev->available = bytes;
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "iocp event handler: %p", ev->event_handler);
+
+ ev->event_handler(ev);
+
if (timer != INFINITE && delta) {
ngx_event_expire_timers((ngx_msec_t) delta);
}
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index e6bebb559..e0fae6f93 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -367,7 +367,7 @@ static ngx_int_t ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags)
c = ev->data;
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0,
- "kevent set event: %d: ft:%d fl:%04X",
+ "kevent set event: %d: ft:%d fl:%04Xd",
c->fd, filter, flags);
if (nchanges >= max_changes) {
@@ -599,7 +599,7 @@ static ngx_int_t ngx_kqueue_process_events(ngx_cycle_t *cycle)
*/
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "kevent: stale event " PTR_FMT, ev);
+ "kevent: stale event %p", ev);
continue;
}
@@ -776,9 +776,8 @@ static ngx_inline void ngx_kqueue_dump_event(ngx_log_t *log, struct kevent *kev)
{
ngx_log_debug6(NGX_LOG_DEBUG_EVENT, log, 0,
(kev->ident > 0x8000000 && kev->ident != (unsigned) -1) ?
- "kevent: " PTR_FMT ": ft:%d fl:%04X ff:%08X d:%d ud:"
- PTR_FMT:
- "kevent: %d: ft:%d fl:%04X ff:%08X d:%d ud:" PTR_FMT,
+ "kevent: %p: ft:%d fl:%04Xd ff:%08Xd d:%d ud:%p":
+ "kevent: %d: ft:%d fl:%04Xd ff:%08Xd d:%d ud:%p",
kev->ident, kev->filter,
kev->flags, kev->fflags,
kev->data, kev->udata);
diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c
index bf78e8f37..18f72c3b5 100644
--- a/src/event/modules/ngx_poll_module.c
+++ b/src/event/modules/ngx_poll_module.c
@@ -302,7 +302,7 @@ static ngx_int_t ngx_poll_process_events(ngx_cycle_t *cycle)
if (cycle->log->log_level & NGX_LOG_DEBUG_ALL) {
for (i = 0; i < nevents; i++) {
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "poll: %d: fd:%d ev:%04X",
+ "poll: %d: fd:%d ev:%04Xd",
i, event_list[i].fd, event_list[i].events);
}
}
@@ -380,13 +380,13 @@ static ngx_int_t ngx_poll_process_events(ngx_cycle_t *cycle)
#if 0
ngx_log_debug4(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "poll: %d: fd:%d ev:%04X rev:%04X",
+ "poll: %d: fd:%d ev:%04Xd rev:%04Xd",
i, event_list[i].fd,
event_list[i].events, event_list[i].revents);
#else
if (event_list[i].revents) {
ngx_log_debug4(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "poll: %d: fd:%d ev:%04X rev:%04X",
+ "poll: %d: fd:%d ev:%04Xd rev:%04Xd",
i, event_list[i].fd,
event_list[i].events, event_list[i].revents);
}
@@ -394,7 +394,7 @@ static ngx_int_t ngx_poll_process_events(ngx_cycle_t *cycle)
if (event_list[i].revents & POLLNVAL) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- "poll() error fd:%d ev:%04X rev:%04X",
+ "poll() error fd:%d ev:%04Xd rev:%04Xd",
event_list[i].fd,
event_list[i].events, event_list[i].revents);
}
@@ -402,7 +402,7 @@ static ngx_int_t ngx_poll_process_events(ngx_cycle_t *cycle)
if (event_list[i].revents & ~(POLLIN|POLLOUT|POLLERR|POLLHUP|POLLNVAL))
{
ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- "strange poll() events fd:%d ev:%04X rev:%04X",
+ "strange poll() events fd:%d ev:%04Xd rev:%04Xd",
event_list[i].fd,
event_list[i].events, event_list[i].revents);
}
@@ -529,7 +529,7 @@ static ngx_int_t ngx_poll_process_events(ngx_cycle_t *cycle)
for ( ;; ) {
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "accept event " PTR_FMT, ev);
+ "accept event %p", ev);
if (ev == NULL) {
break;
diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c
index 4f2f48097..3c0ea9511 100644
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -383,7 +383,7 @@ ngx_int_t ngx_rtsig_process_events(ngx_cycle_t *cycle)
} else {
err = 0;
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "rtsig signo:%d fd:%d band:%X",
+ "rtsig signo:%d fd:%d band:%04Xd",
signo, si.si_fd, si.si_band);
}
@@ -434,7 +434,7 @@ ngx_int_t ngx_rtsig_process_events(ngx_cycle_t *cycle)
ngx_accept_mutex_unlock();
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "rtsig: stale event " PTR_FMT, c);
+ "rtsig: stale event %p", c);
return NGX_OK;
}
diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c
index 06ca4b32d..14e6f81a3 100644
--- a/src/event/modules/ngx_select_module.c
+++ b/src/event/modules/ngx_select_module.c
@@ -23,7 +23,7 @@ static fd_set master_write_fd_set;
static fd_set work_read_fd_set;
static fd_set work_write_fd_set;
-#if (WIN32)
+#if (NGX_WIN32)
static int max_read;
static int max_write;
#else
@@ -114,7 +114,7 @@ static ngx_int_t ngx_select_init(ngx_cycle_t *cycle)
ngx_event_flags = NGX_USE_LEVEL_EVENT|NGX_USE_ONESHOT_EVENT;
-#if (WIN32)
+#if (NGX_WIN32)
max_read = max_write = 0;
#else
max_fd = -1;
@@ -150,7 +150,7 @@ static ngx_int_t ngx_select_add_event(ngx_event_t *ev, int event, u_int flags)
return NGX_OK;
}
-#if (WIN32)
+#if (NGX_WIN32)
if ((event == NGX_READ_EVENT) && (max_read >= FD_SETSIZE)
|| (event == NGX_WRITE_EVENT) && (max_write >= FD_SETSIZE))
@@ -211,7 +211,7 @@ static ngx_int_t ngx_select_del_event(ngx_event_t *ev, int event, u_int flags)
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
"select del event fd:%d ev:%d", c->fd, event);
-#if (WIN32)
+#if (NGX_WIN32)
if (event == NGX_READ_EVENT) {
FD_CLR(c->fd, &master_read_fd_set);
@@ -280,7 +280,7 @@ static ngx_int_t ngx_select_process_events(ngx_cycle_t *cycle)
expire = 1;
-#if !(WIN32)
+#if !(NGX_WIN32)
if (ngx_accept_mutex) {
if (ngx_accept_disabled > 0) {
@@ -324,7 +324,7 @@ static ngx_int_t ngx_select_process_events(ngx_cycle_t *cycle)
"select event: fd:%d wr:%d", c->fd, ev->write);
}
-#if !(WIN32)
+#if !(NGX_WIN32)
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"max_fd: %d", max_fd);
#endif
@@ -348,9 +348,9 @@ static ngx_int_t ngx_select_process_events(ngx_cycle_t *cycle)
work_write_fd_set = master_write_fd_set;
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "select read fd_set: %08X", *(int *) &work_read_fd_set);
+ "select read fd_set: %08Xd", *(int *) &work_read_fd_set);
-#if (WIN32)
+#if (NGX_WIN32)
ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp);
#else
ready = select(max_fd + 1, &work_read_fd_set, &work_write_fd_set, NULL, tp);
@@ -433,7 +433,7 @@ static ngx_int_t ngx_select_process_events(ngx_cycle_t *cycle)
"select ready %d", ready);
if (err) {
-#if (WIN32)
+#if (NGX_WIN32)
ngx_log_error(NGX_LOG_ALERT, cycle->log, err, "select() failed");
#else
ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT,
@@ -534,7 +534,7 @@ static ngx_int_t ngx_select_process_events(ngx_cycle_t *cycle)
for ( ;; ) {
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
- "accept event " PTR_FMT, ev);
+ "accept event %p", ev);
if (ev == NULL) {
break;
@@ -597,7 +597,7 @@ static char *ngx_select_init_conf(ngx_cycle_t *cycle, void *conf)
/* disable warning: the default FD_SETSIZE is 1024U in FreeBSD 5.x */
-#if !(WIN32)
+#if !(NGX_WIN32)
if ((unsigned) ecf->connections > FD_SETSIZE) {
ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
"the maximum number of files "
@@ -606,7 +606,7 @@ static char *ngx_select_init_conf(ngx_cycle_t *cycle, void *conf)
}
#endif
-#if (NGX_THREADS)
+#if (NGX_THREADS) && !(NGX_WIN32)
ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
"select() is not supported in the threaded mode");
return NGX_CONF_ERROR;