From 22a7c50463654139e14b4645a1ac8e35feec9900 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Tue, 17 Feb 2004 21:11:27 +0000 Subject: nginx-0.0.2-2004-02-18-00:11:27 import --- src/event/modules/ngx_poll_module.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'src/event/modules/ngx_poll_module.c') diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c index 9c5f8e12f..c8ea197b6 100644 --- a/src/event/modules/ngx_poll_module.c +++ b/src/event/modules/ngx_poll_module.c @@ -13,7 +13,7 @@ static int ngx_poll_init(ngx_cycle_t *cycle); static void ngx_poll_done(ngx_cycle_t *cycle); static int ngx_poll_add_event(ngx_event_t *ev, int event, u_int flags); static int ngx_poll_del_event(ngx_event_t *ev, int event, u_int flags); -static int ngx_poll_process_events(ngx_log_t *log); +int ngx_poll_process_events(ngx_log_t *log); static struct pollfd *event_list; @@ -245,7 +245,7 @@ static int ngx_poll_del_event(ngx_event_t *ev, int event, u_int flags) } -static int ngx_poll_process_events(ngx_log_t *log) +int ngx_poll_process_events(ngx_log_t *log) { int ready; ngx_int_t i, j, nready, found; @@ -257,13 +257,19 @@ static int ngx_poll_process_events(ngx_log_t *log) ngx_connection_t *c; struct timeval tv; - timer = ngx_event_find_timer(); - ngx_old_elapsed_msec = ngx_elapsed_msec; + if (ngx_event_flags & NGX_OVERFLOW_EVENT) { + timer = 0; + + } else { + timer = ngx_event_find_timer(); - if (timer == 0) { - timer = (ngx_msec_t) INFTIM; + if (timer == 0) { + timer = (ngx_msec_t) INFTIM; + } } + ngx_old_elapsed_msec = ngx_elapsed_msec; + #if (NGX_DEBUG0) for (i = 0; i < nevents; i++) { ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0, "poll: %d: fd:%d ev:%04X", @@ -309,6 +315,11 @@ static int ngx_poll_process_events(ngx_log_t *log) } } + if (timer == 0 && ready == 0) { + /* the overflowed rt signals queue has been drained */ + return NGX_OK; + } + nready = 0; for (i = 0; i < nevents && ready; i++) { @@ -431,5 +442,5 @@ static int ngx_poll_process_events(ngx_log_t *log) ngx_event_expire_timers((ngx_msec_t) delta); } - return NGX_OK; + return nready; } -- cgit