diff --git a/src/core/nginx.c b/src/core/nginx.c
index 25b1b08..742aeb8 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -230,9 +230,10 @@
 
 static void ngx_master_process_cycle(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx)
 {
+    int             signo;
     ngx_msec_t      delay;
     struct timeval  tv;
-    ngx_uint_t      i, live;
+    ngx_uint_t      i, live, first;
     sigset_t        set, wset;
 
     delay = 125;
@@ -277,6 +278,9 @@
 
         for ( ;; ) {
 
+            signo = 0;
+            first = 1;
+
             /* an event loop */
 
             for ( ;; ) {
@@ -299,10 +303,6 @@
                     ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                                    "quit cycle");
 
-                    if (delay < 15000) {
-                        delay *= 2;
-                    }
-
                     if (sigprocmask(SIG_UNBLOCK, &set, NULL) == -1) {
                         ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                                       "sigprocmask() failed");
@@ -310,8 +310,13 @@
                     }
 
                     if (ngx_reap == 0) {
+
+                        if (delay < 15000) {
+                            delay *= 2;
+                        }
+
                         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                                       "sleep %d", delay / 1000);
+                                       "msleep %d", delay);
 
                         ngx_msleep(delay);
 
@@ -369,23 +374,20 @@
 
                 if (ngx_terminate) {
                     if (delay > 10000) {
-                        ngx_signal_processes(cycle, SIGKILL);
+                        signo = SIGKILL;
                     } else {
-                        ngx_signal_processes(cycle,
-                                       ngx_signal_value(NGX_TERMINATE_SIGNAL));
+                        signo = ngx_signal_value(NGX_TERMINATE_SIGNAL);
                     }
                     ngx_process = NGX_PROCESS_QUITING;
                 }
 
                 if (ngx_quit) {
-                    ngx_signal_processes(cycle,
-                                        ngx_signal_value(NGX_SHUTDOWN_SIGNAL));
+                    signo = ngx_signal_value(NGX_SHUTDOWN_SIGNAL);
                     ngx_process = NGX_PROCESS_QUITING;
                 }
 
                 if (ngx_pause) {
-                    ngx_signal_processes(cycle,
-                                        ngx_signal_value(NGX_SHUTDOWN_SIGNAL));
+                    signo = ngx_signal_value(NGX_SHUTDOWN_SIGNAL);
                     ngx_process = NGX_PROCESS_PAUSED;
                 }
 
@@ -402,26 +404,35 @@
                 }
 
                 if (ngx_reconfigure) {
+                    signo = ngx_signal_value(NGX_SHUTDOWN_SIGNAL);
                     ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "reconfiguring");
-                    break;
                 }
 
                 if (ngx_reopen) {
+                    signo = ngx_signal_value(NGX_SHUTDOWN_SIGNAL);
                     ngx_log_error(NGX_LOG_INFO, cycle->log, 0,
                                   "reopening logs");
                     ngx_reopen_files(cycle);
                     ngx_reopen = 0;
                 }
 
-                if (first) {
-                    for (i = 0; i < ngx_last_process; i++) {
-                        if (!ngx_processes[i].detached) {
-                            ngx_processes[i].signal = 1;
+                if (signo) {
+                    if (first) {
+                        for (i = 0; i < ngx_last_process; i++) {
+                            if (!ngx_processes[i].detached) {
+                                ngx_processes[i].signal = 1;
+                            }
                         }
+                        first = 0;
+                        delay = 125;
                     }
-                    first = 1;
+
+                    ngx_signal_processes(cycle, signo);
                 }
 
+                if (ngx_reconfigure) {
+                    break;
+                }
             }
 
             if (ngx_process == NGX_PROCESS_PAUSED) {
diff --git a/src/os/unix/ngx_process.c b/src/os/unix/ngx_process.c
index 685b0d1..b660d8b 100644
--- a/src/os/unix/ngx_process.c
+++ b/src/os/unix/ngx_process.c
@@ -70,6 +70,7 @@
                                       (respawn == NGX_PROCESS_RESPAWN) ? 1 : 0;
     ngx_processes[ngx_last_process].detached =
                                      (respawn == NGX_PROCESS_DETACHED) ? 1 : 0;
+    ngx_processes[ngx_last_process].signal = 0;
     ngx_processes[ngx_last_process].exited = 0;
     ngx_processes[ngx_last_process].exiting = 0;
     ngx_last_process++;
@@ -118,7 +119,7 @@
 
     for (i = 0; i < ngx_last_process; i++) {
 
-        if (ngx_processes[i].detached) {
+        if (!ngx_processes[i].signal) {
             continue;
         }
 
diff --git a/src/os/unix/ngx_process.h b/src/os/unix/ngx_process.h
index d8727c3..a71f682 100644
--- a/src/os/unix/ngx_process.h
+++ b/src/os/unix/ngx_process.h
@@ -16,8 +16,9 @@
 
     unsigned            respawn:1;
     unsigned            detached:1;
-    unsigned            exited:1;
+    unsigned            signal:1;
     unsigned            exiting:1;
+    unsigned            exited:1;
 } ngx_process_t;
 
 
