diff options
Diffstat (limited to '')
| -rw-r--r-- | src/event/modules/ngx_aio_module.c | 4 | ||||
| -rw-r--r-- | src/event/modules/ngx_devpoll_module.c | 12 | ||||
| -rw-r--r-- | src/event/modules/ngx_epoll_module.c | 14 | ||||
| -rw-r--r-- | src/event/modules/ngx_iocp_module.c | 100 | ||||
| -rw-r--r-- | src/event/modules/ngx_kqueue_module.c | 9 | ||||
| -rw-r--r-- | src/event/modules/ngx_poll_module.c | 12 | ||||
| -rw-r--r-- | src/event/modules/ngx_rtsig_module.c | 4 | ||||
| -rw-r--r-- | src/event/modules/ngx_select_module.c | 24 |
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; |
