aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runit/runsvdir.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/runit/runsvdir.c b/runit/runsvdir.c
index 9d560e097..f67330485 100644
--- a/runit/runsvdir.c
+++ b/runit/runsvdir.c
@@ -377,19 +377,17 @@ int runsvdir_main(int argc UNUSED_PARAM, char **argv)
}
}
- switch (bb_got_signal) {
- case SIGHUP:
+ if (bb_got_signal == SIGHUP) {
for (i = 0; i < svnum; i++)
if (sv[i].pid)
kill(sv[i].pid, SIGTERM);
- /* Fall through */
- default: /* SIGTERM (or SIGUSRn if we are init) */
- /* Exit unless we are init */
- if (getpid() == 1)
- break;
- return (SIGHUP == bb_got_signal) ? 111 : EXIT_SUCCESS;
}
+ /* SIGHUP or SIGTERM (or SIGUSRn if we are init) */
+ /* Exit unless we are init */
+ if (getpid() != 1)
+ return (SIGHUP == bb_got_signal) ? 111 : EXIT_SUCCESS;
+ /* init continues to monitor services forever */
bb_got_signal = 0;
} /* for (;;) */
}