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];