comparison src/event/modules/ngx_epoll_module.c @ 116:e38f51cd0905 NGINX_0_3_5

nginx 0.3.5 *) Bugfix: the segmentation fault may occurred if the IMAP/POP3 login was changed by authorization server; bug appeared in 0.2.2. *) Bugfix: the accept mutex did not work and all connections were handled by one process; bug appeared in 0.3.3. *) Bugfix: the timeout did not work if the "rtsig" method and the "timer_resolution" directive were used.
author Igor Sysoev <http://sysoev.ru>
date Fri, 21 Oct 2005 00:00:00 +0400
parents 408f195b3482
children df17fbafec8f
comparison
equal deleted inserted replaced
115:45a230988aa5 116:e38f51cd0905
389 uint32_t revents; 389 uint32_t revents;
390 ngx_int_t instance, i; 390 ngx_int_t instance, i;
391 ngx_uint_t level; 391 ngx_uint_t level;
392 ngx_err_t err; 392 ngx_err_t err;
393 ngx_log_t *log; 393 ngx_log_t *log;
394 ngx_msec_t delta;
395 ngx_event_t *rev, *wev, **queue; 394 ngx_event_t *rev, *wev, **queue;
396 ngx_connection_t *c; 395 ngx_connection_t *c;
397 396
398 /* NGX_TIMER_INFINITE == INFTIM */ 397 /* NGX_TIMER_INFINITE == INFTIM */
399 398
406 err = ngx_errno; 405 err = ngx_errno;
407 } else { 406 } else {
408 err = 0; 407 err = 0;
409 } 408 }
410 409
411 delta = ngx_current_msec;
412
413 if (flags & NGX_UPDATE_TIME) { 410 if (flags & NGX_UPDATE_TIME) {
414 ngx_time_update(0, 0); 411 ngx_time_update(0, 0);
415 }
416
417 if (timer != NGX_TIMER_INFINITE) {
418 delta = ngx_current_msec - delta;
419
420 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
421 "epoll timer: %M, delta: %M", timer, delta);
422 } else {
423 if (events == 0) {
424 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
425 "epoll_wait() returned no events without timeout");
426 return NGX_ERROR;
427 }
428 } 412 }
429 413
430 if (err) { 414 if (err) {
431 if (err == NGX_EINTR) { 415 if (err == NGX_EINTR) {
432 416
444 ngx_log_error(level, cycle->log, err, "epoll_wait() failed"); 428 ngx_log_error(level, cycle->log, err, "epoll_wait() failed");
445 return NGX_ERROR; 429 return NGX_ERROR;
446 } 430 }
447 431
448 if (events == 0) { 432 if (events == 0) {
449 return NGX_OK; 433 if (timer != NGX_TIMER_INFINITE) {
434 return NGX_OK;
435 }
436
437 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
438 "epoll_wait() returned no events without timeout");
439 return NGX_ERROR;
450 } 440 }
451 441
452 ngx_mutex_lock(ngx_posted_events_mutex); 442 ngx_mutex_lock(ngx_posted_events_mutex);
453 443
454 log = cycle->log; 444 log = cycle->log;