Mercurial > hg > nginx
comparison src/event/modules/ngx_poll_module.c @ 315:39b6f2df45c0
nginx-0.0.3-2004-04-14-21:44:28 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 14 Apr 2004 17:44:28 +0000 |
parents | d71c87d11b16 |
children | a0beefedaf94 |
comparison
equal
deleted
inserted
replaced
314:d71c87d11b16 | 315:39b6f2df45c0 |
---|---|
123 ngx_event_t *e; | 123 ngx_event_t *e; |
124 ngx_connection_t *c; | 124 ngx_connection_t *c; |
125 | 125 |
126 c = ev->data; | 126 c = ev->data; |
127 | 127 |
128 ev->active = 1; | |
129 | |
128 if (ev->index != NGX_INVALID_INDEX) { | 130 if (ev->index != NGX_INVALID_INDEX) { |
129 ngx_log_error(NGX_LOG_ALERT, ev->log, 0, | 131 ngx_log_error(NGX_LOG_ALERT, ev->log, 0, |
130 "poll event fd:%d ev:%d is already set", c->fd, event); | 132 "poll event fd:%d ev:%d is already set", c->fd, event); |
131 return NGX_OK; | 133 return NGX_OK; |
132 } | 134 } |
161 | 163 |
162 event_list[e->index].events |= event; | 164 event_list[e->index].events |= event; |
163 ev->index = e->index; | 165 ev->index = e->index; |
164 } | 166 } |
165 | 167 |
166 ev->active = 1; | |
167 ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1 : 0; | 168 ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1 : 0; |
168 | 169 |
169 return NGX_OK; | 170 return NGX_OK; |
170 } | 171 } |
171 | 172 |
276 expire = 0; | 277 expire = 0; |
277 | 278 |
278 } else { | 279 } else { |
279 timer = ngx_event_find_timer(); | 280 timer = ngx_event_find_timer(); |
280 | 281 |
281 if (timer == 0) { | 282 if (timer == -1) { |
283 timer = 0; | |
284 expire = 1; | |
285 | |
286 } else if (timer == 0) { | |
282 timer = (ngx_msec_t) INFTIM; | 287 timer = (ngx_msec_t) INFTIM; |
283 expire = 0; | 288 expire = 0; |
284 | 289 |
285 } else { | 290 } else { |
286 expire = 1; | 291 expire = 1; |
300 if (ngx_accept_mutex) { | 305 if (ngx_accept_mutex) { |
301 if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) { | 306 if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) { |
302 return NGX_ERROR; | 307 return NGX_ERROR; |
303 } | 308 } |
304 | 309 |
305 if (ngx_accept_mutex_held == 0 && timer > ngx_accept_mutex_delay) { | 310 if (ngx_accept_mutex_held == 0 |
311 && (timer == (ngx_msec_t) INFTIM || timer > ngx_accept_mutex_delay)) | |
312 { | |
306 timer = ngx_accept_mutex_delay; | 313 timer = ngx_accept_mutex_delay; |
307 expire = 0; | 314 expire = 0; |
308 } | 315 } |
309 } | 316 } |
310 | 317 |
346 ngx_accept_mutex_unlock(); | 353 ngx_accept_mutex_unlock(); |
347 return NGX_ERROR; | 354 return NGX_ERROR; |
348 } | 355 } |
349 } | 356 } |
350 | 357 |
351 if (timer == 0 && ready == 0) { | 358 if ((ngx_event_flags & NGX_OVERFLOW_EVENT) && timer == 0 && ready == 0) { |
359 | |
352 /* the overflowed rt signals queue has been drained */ | 360 /* the overflowed rt signals queue has been drained */ |
361 | |
362 ngx_accept_mutex_unlock(); | |
353 return NGX_OK; | 363 return NGX_OK; |
354 } | 364 } |
355 | 365 |
356 if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { | 366 if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { |
357 ngx_accept_mutex_unlock(); | 367 ngx_accept_mutex_unlock(); |