diff src/core/nginx.c @ 231:92db0aa1e83f

nginx-0.0.1-2004-01-16-21:29:15 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 16 Jan 2004 18:29:15 +0000
parents 2ba3477070ac
children cd71b95716b4
line wrap: on
line diff
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -22,6 +22,7 @@ typedef struct {
 
 
 static void ngx_master_process_cycle(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx);
+static void ngx_master_exit(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx);
 static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data);
 static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle, char **envp);
 static ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv);
@@ -266,6 +267,7 @@ static void ngx_master_process_cycle(ngx
     ngx_new_binary = 0;
     signo = 0;
     sent = 0;
+    live = 0;
 
     for ( ;; ) {
         ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "new cycle");
@@ -273,6 +275,7 @@ static void ngx_master_process_cycle(ngx
         if (ngx_process == NGX_PROCESS_MASTER) {
             ngx_spawn_process(cycle, ngx_worker_process_cycle, NULL,
                               "worker process", NGX_PROCESS_RESPAWN);
+            live = 1;
 
         } else {
             ngx_init_temp_number();
@@ -414,29 +417,12 @@ static void ngx_master_process_cycle(ngx
                     }
 
                     if (!live) {
-                        if (ngx_terminate || ngx_quit) {
-
-                            if (ngx_inherited && getppid() > 1) {
-                                name = ctx->pid.name.data;
-
-                            } else {
-                                name = ctx->name;
-                            }
+                        sent = 0;
+                    }
+                }
 
-                            if (ngx_delete_file(name) == NGX_FILE_ERROR) {
-                                ngx_log_error(NGX_LOG_ALERT, cycle->log,
-                                              ngx_errno,
-                                              ngx_delete_file_n
-                                              " \"%s\" failed", name);
-                            }
-
-                            ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exit");
-                            exit(0);
-
-                        } else {
-                            sent = 0;
-                        }
-                    }
+                if (!live && (ngx_terminate || ngx_quit)) {
+                    ngx_master_exit(cycle, ctx);
                 }
 
                 if (ngx_terminate) {
@@ -530,7 +516,6 @@ static void ngx_master_process_cycle(ngx
 
                 /* STUB */
                 if (ngx_reopen) {
-                    ngx_reopen = 0;
                     break;
                 }
 
@@ -539,7 +524,10 @@ static void ngx_master_process_cycle(ngx
                 }
             }
 
-            if (ngx_noaccept) {
+            if (ngx_reopen) {
+                ngx_reopen = 0;
+
+            } else if (ngx_noaccept) {
                 ngx_noaccept = 0;
 
             } else {
@@ -559,6 +547,27 @@ static void ngx_master_process_cycle(ngx
 }
 
 
+static void ngx_master_exit(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx)
+{
+    char  *name;
+
+    if (ngx_inherited && getppid() > 1) {
+        name = ctx->pid.name.data;
+
+    } else {
+        name = ctx->name;
+    }
+
+    if (ngx_delete_file(name) == NGX_FILE_ERROR) {
+        ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
+                      ngx_delete_file_n " \"%s\" failed", name);
+    }
+
+    ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exit");
+    exit(0);
+}
+
+
 static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data)
 {
     sigset_t          set;