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