aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix/ngx_process_cycle.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-10-03 20:02:06 +0000
committerIgor Sysoev <igor@sysoev.ru>2004-10-03 20:02:06 +0000
commitaad1b89b68b0651b5729b15203081f6b4620847a (patch)
tree8a5906c3607c082e27d4d8ebc1e9a9e5b42822b5 /src/os/unix/ngx_process_cycle.c
parent8035fd27919d1f598b0d655a3bf30200220462d3 (diff)
downloadnginx-aad1b89b68b0651b5729b15203081f6b4620847a.tar.gz
nginx-aad1b89b68b0651b5729b15203081f6b4620847a.zip
nginx-0.1.0-2004-10-04-00:02:06 import
Diffstat (limited to 'src/os/unix/ngx_process_cycle.c')
-rw-r--r--src/os/unix/ngx_process_cycle.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
index 5a9f79dc2..4d4db54c6 100644
--- a/src/os/unix/ngx_process_cycle.c
+++ b/src/os/unix/ngx_process_cycle.c
@@ -189,7 +189,9 @@ void ngx_master_process_cycle(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx)
ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "start new workers");
ngx_start_worker_processes(cycle, ccf->worker_processes,
- NGX_PROCESS_JUST_RESPAWN);
+ NGX_PROCESS_RESPAWN);
+ ngx_noaccepting = 0;
+
continue;
}
@@ -313,15 +315,19 @@ static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n,
for (i = 0; i < ngx_last_process; i++) {
- if (i == ngx_process_slot || ngx_processes[i].pid == -1) {
+ if (i == ngx_process_slot
+ || ngx_processes[i].pid == -1
+ || ngx_processes[i].channel[0] == -1)
+ {
continue;
}
- ngx_log_debug5(NGX_LOG_DEBUG_CORE, cycle->log, 0,
+ ngx_log_debug6(NGX_LOG_DEBUG_CORE, cycle->log, 0,
"pass channel s:%d pid:" PID_T_FMT
- " fd:%d to s:%d pid:" PID_T_FMT,
+ " fd:%d to s:%d pid:" PID_T_FMT " fd:%d",
ch.slot, ch.pid, ch.fd,
- i, ngx_processes[i].pid);
+ i, ngx_processes[i].pid,
+ ngx_processes[i].channel[0]);
/* TODO: NGX_AGAIN */
@@ -378,6 +384,16 @@ static void ngx_signal_worker_processes(ngx_cycle_t *cycle, int signo)
for (i = 0; i < ngx_last_process; i++) {
+ ngx_log_debug7(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "child: %d " PID_T_FMT " e:%d t:%d d:%d r:%d j:%d",
+ i,
+ ngx_processes[i].pid,
+ ngx_processes[i].exiting,
+ ngx_processes[i].exited,
+ ngx_processes[i].detached,
+ ngx_processes[i].respawn,
+ ngx_processes[i].just_respawn);
+
if (ngx_processes[i].detached || ngx_processes[i].pid == -1) {
continue;
}
@@ -632,6 +648,10 @@ static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data)
continue;
}
+ if (ngx_processes[n].channel[1] == -1) {
+ continue;
+ }
+
if (close(ngx_processes[n].channel[1]) == -1) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"close() failed");