Mercurial > hg > nginx
comparison src/event/modules/ngx_eventport_module.c @ 3587:e1409e56ba7c stable-0.7
merge r3473, r3474, r3385, r3386, r3537:
signal processing stability:
*) use sys_errlist[] in signal handler instead
of non Async-Signal-Safe strerror_r()
*) do not update time in the timer signal handler,
since localtime_r() is not Async-Signal-Safe function
*) use previously cached GMT offset value to update time from a signal handler
*) change ngx_time_update() interface since there are no notification methods
those return time
*) introduce ngx_time_sigsafe_update() to update the error log time only
*) change ngx_time_update() interface
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 07 Jun 2010 10:35:08 +0000 |
parents | 2efa8d2fcde1 |
children |
comparison
equal
deleted
inserted
replaced
3586:2d21e02fc01d | 3587:e1409e56ba7c |
---|---|
403 n = port_getn(ep, event_list, (u_int) nevents, &events, tp); | 403 n = port_getn(ep, event_list, (u_int) nevents, &events, tp); |
404 | 404 |
405 err = ngx_errno; | 405 err = ngx_errno; |
406 | 406 |
407 if (flags & NGX_UPDATE_TIME) { | 407 if (flags & NGX_UPDATE_TIME) { |
408 ngx_time_update(0, 0); | 408 ngx_time_update(); |
409 } | 409 } |
410 | 410 |
411 if (n == -1) { | 411 if (n == -1) { |
412 if (err == ETIME) { | 412 if (err == ETIME) { |
413 if (timer != NGX_TIMER_INFINITE) { | 413 if (timer != NGX_TIMER_INFINITE) { |
437 ngx_mutex_lock(ngx_posted_events_mutex); | 437 ngx_mutex_lock(ngx_posted_events_mutex); |
438 | 438 |
439 for (i = 0; i < events; i++) { | 439 for (i = 0; i < events; i++) { |
440 | 440 |
441 if (event_list[i].portev_source == PORT_SOURCE_TIMER) { | 441 if (event_list[i].portev_source == PORT_SOURCE_TIMER) { |
442 ngx_time_update(0, 0); | 442 ngx_time_update(); |
443 continue; | 443 continue; |
444 } | 444 } |
445 | 445 |
446 ev = event_list[i].portev_user; | 446 ev = event_list[i].portev_user; |
447 | 447 |