about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nitro.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/nitro.c b/nitro.c
index 935818d..4106bc8 100644
--- a/nitro.c
+++ b/nitro.c
@@ -618,12 +618,10 @@ process_step(int i, enum process_events ev)
 
 		case PROC_FATAL:
 		case PROC_DELAY:
+		case PROC_DOWN:
 			services[i].state = PROC_DOWN;
 			services[i].timeout = 0;
 			services[i].deadline = 0;
-
-		case PROC_DOWN:
-			/* ignore, is down */
 			break;
 		}
 		break;
@@ -942,7 +940,10 @@ do_shutdown(int state)
 			int b = add_service("SYS");
 			services[b].state = PROC_ONESHOT;
 			process_step(b, EVNT_WANT_DOWN);
-			services[b].timeout = 30000;
+			if (services[b].state == PROC_DOWN)
+				do_stop_services();
+			else
+				services[b].timeout = 30000;
 		} else {
 			do_stop_services();
 		}