Mercurial > hg > nginx
diff src/event/modules/ngx_poll_module.c @ 37:9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 23 Dec 2002 18:22:18 +0000 |
parents | c14d7232b11f |
children | 2ffaa35fba42 |
line wrap: on
line diff
--- a/src/event/modules/ngx_poll_module.c +++ b/src/event/modules/ngx_poll_module.c @@ -2,6 +2,7 @@ #include <ngx_config.h> #include <ngx_core.h> #include <ngx_types.h> +#include <ngx_errno.h> #include <ngx_log.h> #include <ngx_time.h> #include <ngx_connection.h> @@ -108,6 +109,7 @@ int ngx_poll_del_event(ngx_event_t *ev, if (e == NULL || e->index == NGX_INVALID_INDEX) { if (ev->index < --nevents) { + event_list[ev->index] = event_list[nevents]; event_index[ev->index] = event_index[nevents]; event_index[ev->index]->index = ev->index; } @@ -125,6 +127,7 @@ int ngx_poll_process_events(ngx_log_t *l { int i, ready, found; u_int timer, delta; + ngx_err_t err; ngx_event_t *ev; ngx_connection_t *c; @@ -202,7 +205,7 @@ int ngx_poll_process_events(ngx_log_t *l if (c->read->oneshot) { ngx_del_timer(c->read); - ngx_select_del_event(c->read, NGX_READ_EVENT, 0); + ngx_poll_del_event(c->read, NGX_READ_EVENT, 0); } if (c->read->event_handler(c->read) == NGX_ERROR) { @@ -216,7 +219,7 @@ int ngx_poll_process_events(ngx_log_t *l if (c->write->oneshot) { ngx_del_timer(c->write); - ngx_select_del_event(c->write, NGX_WRITE_EVENT, 0); + ngx_poll_del_event(c->write, NGX_WRITE_EVENT, 0); } if (c->write->event_handler(c->write) == NGX_ERROR) { @@ -226,7 +229,13 @@ int ngx_poll_process_events(ngx_log_t *l if (event_list[i].revents & (POLLERR|POLLHUP|POLLNVAL)) { found = 1; - ngx_log_error(NGX_LOG_ERR, log, ngx_errno, + + err = 0; + if (event_list[i].revents & POLLNVAL) { + err = EBADF; + } + + ngx_log_error(NGX_LOG_ERR, log, err, "poll() error on %d:%d", event_list[i].fd, event_list[i].revents); }