Mercurial > hg > nginx
comparison src/event/modules/ngx_poll_module.c @ 247:008276b9e061
nginx-0.0.1-2004-02-01-11:10:52 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 01 Feb 2004 08:10:52 +0000 |
parents | 6753e8cdaa2c |
children | e885208c518b |
comparison
equal
deleted
inserted
replaced
246:6753e8cdaa2c | 247:008276b9e061 |
---|---|
259 ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT, | 259 ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT, |
260 log, err, "poll() failed"); | 260 log, err, "poll() failed"); |
261 return NGX_ERROR; | 261 return NGX_ERROR; |
262 } | 262 } |
263 | 263 |
264 if ((int) timer != INFTIM) { | 264 if (timer != (ngx_msec_t) INFTIM) { |
265 delta = ngx_elapsed_msec - delta; | 265 delta = ngx_elapsed_msec - delta; |
266 | 266 |
267 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0, | 267 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0, |
268 "poll timer: %d, delta: %d", timer, (int) delta); | 268 "poll timer: %d, delta: %d", timer, (int) delta); |
269 } else { | 269 } else { |
275 } | 275 } |
276 | 276 |
277 nready = 0; | 277 nready = 0; |
278 | 278 |
279 for (i = 0; i < nevents && ready; i++) { | 279 for (i = 0; i < nevents && ready; i++) { |
280 | |
281 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0, | |
282 "poll: fd:%d ev:%04X rev:%04X", | |
283 event_list[i].fd, | |
284 event_list[i].events, event_list[i].revents); | |
285 | |
286 if (event_list[i].revents & (POLLERR|POLLHUP|POLLNVAL)) { | |
287 ngx_log_error(NGX_LOG_ALERT, log, 0, | |
288 "poll() error fd:%d ev:%04X rev:%04X", | |
289 event_list[i].fd, | |
290 event_list[i].events, event_list[i].revents); | |
291 } | |
292 | |
293 if (event_list[i].revents & ~(POLLIN|POLLOUT|POLLERR|POLLHUP|POLLNVAL)) | |
294 { | |
295 ngx_log_error(NGX_LOG_ALERT, log, 0, | |
296 "strange poll() events fd:%d ev:%04X rev:%04X", | |
297 event_list[i].fd, | |
298 event_list[i].events, event_list[i].revents); | |
299 } | |
300 | |
280 c = &ngx_cycle->connections[event_list[i].fd]; | 301 c = &ngx_cycle->connections[event_list[i].fd]; |
281 | 302 |
282 if (c->fd == -1) { | 303 if (c->fd == -1) { |
283 cycle = ngx_old_cycles.elts; | 304 cycle = ngx_old_cycles.elts; |
284 for (j = 0; j < ngx_old_cycles.nelts; j++) { | 305 for (j = 0; j < ngx_old_cycles.nelts; j++) { |
291 } | 312 } |
292 } | 313 } |
293 } | 314 } |
294 | 315 |
295 if (c->fd == -1) { | 316 if (c->fd == -1) { |
296 ngx_log_error(NGX_LOG_ALERT, log, 0, "unkonwn cycle"); | 317 ngx_log_error(NGX_LOG_ALERT, log, 0, "unknown cycle"); |
297 exit(1); | 318 continue; |
298 } | 319 } |
299 | |
300 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0, | |
301 "poll: fd:%d ev:%04X rev:%04X", | |
302 event_list[i].fd, | |
303 event_list[i].events, event_list[i].revents); | |
304 | 320 |
305 found = 0; | 321 found = 0; |
306 | 322 |
307 if (event_list[i].revents & POLLNVAL) { | 323 if (event_list[i].revents & (POLLIN|POLLERR|POLLHUP)) { |
308 ngx_log_error(NGX_LOG_ALERT, log, EBADF, | |
309 "poll() error on %d", event_list[i].fd); | |
310 continue; | |
311 } | |
312 | |
313 if (event_list[i].revents & POLLIN | |
314 || (event_list[i].revents & (POLLERR|POLLHUP) | |
315 && c->read->active)) | |
316 { | |
317 found = 1; | 324 found = 1; |
318 ready_index[nready++] = c->read; | 325 ready_index[nready++] = c->read; |
319 } | 326 } |
320 | 327 |
321 if (event_list[i].revents & POLLOUT | 328 if (event_list[i].revents & (POLLOUT|POLLERR|POLLHUP)) { |
322 || (event_list[i].revents & (POLLERR|POLLHUP) | |
323 && c->write->active)) | |
324 { | |
325 found = 1; | 329 found = 1; |
326 ready_index[nready++] = c->write; | 330 ready_index[nready++] = c->write; |
327 } | 331 } |
328 | 332 |
329 if (found) { | 333 if (found) { |
330 ready--; | 334 ready--; |
331 continue; | 335 continue; |
332 } | |
333 | |
334 if (event_list[i].revents & (POLLERR|POLLHUP)) { | |
335 ngx_log_error(NGX_LOG_ALERT, log, 0, | |
336 "strange poll() error on fd:%d ev:%04X rev:%04X", | |
337 event_list[i].fd, | |
338 event_list[i].events, event_list[i].revents); | |
339 } | 336 } |
340 } | 337 } |
341 | 338 |
342 for (i = 0; i < nready; i++) { | 339 for (i = 0; i < nready; i++) { |
343 ev = ready_index[i]; | 340 ev = ready_index[i]; |