nginx-0.0.1-2002-12-23-21:22:18 import
diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c
index e10e615..bff4960 100644
--- 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 @@
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 i, ready, found;
u_int timer, delta;
+ ngx_err_t err;
ngx_event_t *ev;
ngx_connection_t *c;
@@ -202,7 +205,7 @@
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 @@
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 @@
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);
}
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 3cb070c..b91a72a 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -35,8 +35,18 @@
ngx_event_type_e ngx_event_type = NGX_KQUEUE_EVENT;
#endif
-#else
+#elif (HAVE_POLL)
+
+#if 0
ngx_event_type_e ngx_event_type = NGX_SELECT_EVENT;
+#else
+ngx_event_type_e ngx_event_type = NGX_POLL_EVENT;
+#endif
+
+#else
+
+ngx_event_type_e ngx_event_type = NGX_SELECT_EVENT;
+
#endif
ngx_event_actions_t ngx_event_actions;