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);
         }