diff options
author | Igor Sysoev <igor@sysoev.ru> | 2004-04-01 06:21:13 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2004-04-01 06:21:13 +0000 |
commit | 205dc145c5d22613826927d6ae8ccd3a69d0e907 (patch) | |
tree | 140fa2cbc7c93beca47af90db0e35d9563ae6146 /src/os/unix/ngx_process_cycle.c | |
parent | 709405b7559d3abcb90b61368c7072fb774f661b (diff) | |
download | nginx-205dc145c5d22613826927d6ae8ccd3a69d0e907.tar.gz nginx-205dc145c5d22613826927d6ae8ccd3a69d0e907.zip |
nginx-0.0.3-2004-04-01-10:21:13 import
Diffstat (limited to 'src/os/unix/ngx_process_cycle.c')
-rw-r--r-- | src/os/unix/ngx_process_cycle.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c index f2d392a91..090733adb 100644 --- a/src/os/unix/ngx_process_cycle.c +++ b/src/os/unix/ngx_process_cycle.c @@ -65,10 +65,11 @@ void ngx_master_process_cycle(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx) signo = 0; live = 0; - ngx_accept_mutex = mmap(NULL, sizeof(ngx_atomic_t), PROT_READ|PROT_WRITE, - MAP_ANON|MAP_SHARED, -1, 0); + ngx_accept_mutex_ptr = mmap(NULL, sizeof(ngx_atomic_t), + PROT_READ|PROT_WRITE, + MAP_ANON|MAP_SHARED, -1, 0); - if (ngx_accept_mutex == NULL) { + if (ngx_accept_mutex_ptr == NULL) { ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, "mmap(MAP_ANON|MAP_SHARED) failed"); /* fatal */ @@ -375,12 +376,13 @@ static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data) ngx_process = NGX_PROCESS_WORKER; ngx_last_process = 0; - if (ngx_accept_mutex) { - ngx_accept_token = 1; - } - ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module); + if (ccf->worker_processes > 1) { + ngx_accept_mutex = ngx_accept_mutex_ptr; + ngx_accept_mutex_held = 1; + } + if (ccf->group != (gid_t) NGX_CONF_UNSET) { if (setuid(ccf->group) == -1) { ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, @@ -483,6 +485,8 @@ static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data) ngx_close_listening_sockets(cycle); + ngx_accept_mutex = NULL; + for ( ;; ) { if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) { ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exiting"); |