Mercurial > hg > nginx
comparison 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 |
comparison
equal
deleted
inserted
replaced
36:c14d7232b11f | 37:9fe40e51d4a3 |
---|---|
1 | 1 |
2 #include <ngx_config.h> | 2 #include <ngx_config.h> |
3 #include <ngx_core.h> | 3 #include <ngx_core.h> |
4 #include <ngx_types.h> | 4 #include <ngx_types.h> |
5 #include <ngx_errno.h> | |
5 #include <ngx_log.h> | 6 #include <ngx_log.h> |
6 #include <ngx_time.h> | 7 #include <ngx_time.h> |
7 #include <ngx_connection.h> | 8 #include <ngx_connection.h> |
8 #include <ngx_event.h> | 9 #include <ngx_event.h> |
9 #include <ngx_poll_module.h> | 10 #include <ngx_poll_module.h> |
106 | 107 |
107 ngx_log_debug(c->log, "del event: %d, %d" _ c->fd _ event); | 108 ngx_log_debug(c->log, "del event: %d, %d" _ c->fd _ event); |
108 | 109 |
109 if (e == NULL || e->index == NGX_INVALID_INDEX) { | 110 if (e == NULL || e->index == NGX_INVALID_INDEX) { |
110 if (ev->index < --nevents) { | 111 if (ev->index < --nevents) { |
112 event_list[ev->index] = event_list[nevents]; | |
111 event_index[ev->index] = event_index[nevents]; | 113 event_index[ev->index] = event_index[nevents]; |
112 event_index[ev->index]->index = ev->index; | 114 event_index[ev->index]->index = ev->index; |
113 } | 115 } |
114 | 116 |
115 } else { | 117 } else { |
123 | 125 |
124 int ngx_poll_process_events(ngx_log_t *log) | 126 int ngx_poll_process_events(ngx_log_t *log) |
125 { | 127 { |
126 int i, ready, found; | 128 int i, ready, found; |
127 u_int timer, delta; | 129 u_int timer, delta; |
130 ngx_err_t err; | |
128 ngx_event_t *ev; | 131 ngx_event_t *ev; |
129 ngx_connection_t *c; | 132 ngx_connection_t *c; |
130 | 133 |
131 if (timer_queue.timer_next != &timer_queue) { | 134 if (timer_queue.timer_next != &timer_queue) { |
132 timer = timer_queue.timer_next->timer_delta; | 135 timer = timer_queue.timer_next->timer_delta; |
200 found = 1; | 203 found = 1; |
201 c->read->ready = 1; | 204 c->read->ready = 1; |
202 | 205 |
203 if (c->read->oneshot) { | 206 if (c->read->oneshot) { |
204 ngx_del_timer(c->read); | 207 ngx_del_timer(c->read); |
205 ngx_select_del_event(c->read, NGX_READ_EVENT, 0); | 208 ngx_poll_del_event(c->read, NGX_READ_EVENT, 0); |
206 } | 209 } |
207 | 210 |
208 if (c->read->event_handler(c->read) == NGX_ERROR) { | 211 if (c->read->event_handler(c->read) == NGX_ERROR) { |
209 c->read->close_handler(c->read); | 212 c->read->close_handler(c->read); |
210 } | 213 } |
214 found = 1; | 217 found = 1; |
215 c->write->ready = 1; | 218 c->write->ready = 1; |
216 | 219 |
217 if (c->write->oneshot) { | 220 if (c->write->oneshot) { |
218 ngx_del_timer(c->write); | 221 ngx_del_timer(c->write); |
219 ngx_select_del_event(c->write, NGX_WRITE_EVENT, 0); | 222 ngx_poll_del_event(c->write, NGX_WRITE_EVENT, 0); |
220 } | 223 } |
221 | 224 |
222 if (c->write->event_handler(c->write) == NGX_ERROR) { | 225 if (c->write->event_handler(c->write) == NGX_ERROR) { |
223 c->write->close_handler(c->write); | 226 c->write->close_handler(c->write); |
224 } | 227 } |
225 } | 228 } |
226 | 229 |
227 if (event_list[i].revents & (POLLERR|POLLHUP|POLLNVAL)) { | 230 if (event_list[i].revents & (POLLERR|POLLHUP|POLLNVAL)) { |
228 found = 1; | 231 found = 1; |
229 ngx_log_error(NGX_LOG_ERR, log, ngx_errno, | 232 |
233 err = 0; | |
234 if (event_list[i].revents & POLLNVAL) { | |
235 err = EBADF; | |
236 } | |
237 | |
238 ngx_log_error(NGX_LOG_ERR, log, err, | |
230 "poll() error on %d:%d", | 239 "poll() error on %d:%d", |
231 event_list[i].fd, event_list[i].revents); | 240 event_list[i].fd, event_list[i].revents); |
232 } | 241 } |
233 | 242 |
234 if (found) { | 243 if (found) { |