Mercurial > hg > nginx-vendor-current
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; |