diff options
-rw-r--r-- | runit/runsvdir.c | 14 |
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) | |||
377 | } | 377 | } |
378 | } | 378 | } |
379 | 379 | ||
380 | switch (bb_got_signal) { | 380 | if (bb_got_signal == SIGHUP) { |
381 | case SIGHUP: | ||
382 | for (i = 0; i < svnum; i++) | 381 | for (i = 0; i < svnum; i++) |
383 | if (sv[i].pid) | 382 | if (sv[i].pid) |
384 | kill(sv[i].pid, SIGTERM); | 383 | kill(sv[i].pid, SIGTERM); |
385 | /* Fall through */ | ||
386 | default: /* SIGTERM (or SIGUSRn if we are init) */ | ||
387 | /* Exit unless we are init */ | ||
388 | if (getpid() == 1) | ||
389 | break; | ||
390 | return (SIGHUP == bb_got_signal) ? 111 : EXIT_SUCCESS; | ||
391 | } | 384 | } |
385 | /* SIGHUP or SIGTERM (or SIGUSRn if we are init) */ | ||
386 | /* Exit unless we are init */ | ||
387 | if (getpid() != 1) | ||
388 | return (SIGHUP == bb_got_signal) ? 111 : EXIT_SUCCESS; | ||
392 | 389 | ||
390 | /* init continues to monitor services forever */ | ||
393 | bb_got_signal = 0; | 391 | bb_got_signal = 0; |
394 | } /* for (;;) */ | 392 | } /* for (;;) */ |
395 | } | 393 | } |