diff src/os/unix/ngx_process_cycle.c @ 449:3b1e8c9df9ad

nginx-0.1.0-2004-10-04-00:02:06 import
author Igor Sysoev <igor@sysoev.ru>
date Sun, 03 Oct 2004 20:02:06 +0000
parents 241dc8092a33
children 23fb87bddda1
line wrap: on
line diff
--- 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_
                 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(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(
 
     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
             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");