comparison src/event/modules/ngx_poll_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
239 { 239 {
240 int ready, revents; 240 int ready, revents;
241 ngx_err_t err; 241 ngx_err_t err;
242 ngx_int_t i, nready; 242 ngx_int_t i, nready;
243 ngx_uint_t found, level; 243 ngx_uint_t found, level;
244 ngx_msec_t delta;
245 ngx_event_t *ev, **queue; 244 ngx_event_t *ev, **queue;
246 ngx_connection_t *c; 245 ngx_connection_t *c;
247 246
248 /* NGX_TIMER_INFINITE == INFTIM */ 247 /* NGX_TIMER_INFINITE == INFTIM */
249 248
264 if (ready == -1) { 263 if (ready == -1) {
265 err = ngx_errno; 264 err = ngx_errno;
266 } else { 265 } else {
267 err = 0; 266 err = 0;
268 } 267 }
269
270 delta = ngx_current_msec;
271 268
272 if (flags & NGX_UPDATE_TIME) { 269 if (flags & NGX_UPDATE_TIME) {
273 ngx_time_update(0, 0); 270 ngx_time_update(0, 0);
274 } 271 }
275 272
292 289
293 ngx_log_error(level, cycle->log, err, "poll() failed"); 290 ngx_log_error(level, cycle->log, err, "poll() failed");
294 return NGX_ERROR; 291 return NGX_ERROR;
295 } 292 }
296 293
297 if (timer != NGX_TIMER_INFINITE) {
298 delta = ngx_current_msec - delta;
299
300 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
301 "poll timer: %M, delta: %M", timer, delta);
302 } else {
303 if (ready == 0) {
304 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
305 "poll() returned no events without timeout");
306 return NGX_ERROR;
307 }
308 }
309
310 if (ready == 0) { 294 if (ready == 0) {
311 return NGX_OK; 295 if (timer != NGX_TIMER_INFINITE) {
296 return NGX_OK;
297 }
298
299 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
300 "poll() returned no events without timeout");
301 return NGX_ERROR;
312 } 302 }
313 303
314 ngx_mutex_lock(ngx_posted_events_mutex); 304 ngx_mutex_lock(ngx_posted_events_mutex);
315 305
316 nready = 0; 306 nready = 0;