about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2024-01-23 22:05:01 +0100
committerLeah Neukirchen <leah@vuxu.org>2024-01-23 22:05:01 +0100
commit706ec6244ad594e617941d22377d11aaa4cff126 (patch)
tree9d5e747e853ea281bf90a51e53a26675a8dee4d6
parent2a0a90050c288dc617d71e79e0de203bf11cfc36 (diff)
downloadnitro-706ec6244ad594e617941d22377d11aaa4cff126.tar.gz
nitro-706ec6244ad594e617941d22377d11aaa4cff126.tar.xz
nitro-706ec6244ad594e617941d22377d11aaa4cff126.zip
more robust shutdown
-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();
 		}