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();