aboutsummaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2002-07-03 05:15:23 +0000
committerandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2002-07-03 05:15:23 +0000
commit869511a239daa2d9253ecaa0130fcac0f4e2227d (patch)
tree29cb674d7d16597c459799c118297a1bd6222257 /init
parent0def8051e0538fabe1e1b212670e1dbec0a59293 (diff)
downloadbusybox-w32-869511a239daa2d9253ecaa0130fcac0f4e2227d.tar.gz
busybox-w32-869511a239daa2d9253ecaa0130fcac0f4e2227d.tar.bz2
busybox-w32-869511a239daa2d9253ecaa0130fcac0f4e2227d.zip
Patch from till busch <buti@gmx.at> -- unblock all signals
in exec_signal() before calling exec() git-svn-id: svn://busybox.net/trunk/busybox@4992 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'init')
-rw-r--r--init/init.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/init/init.c b/init/init.c
index f109c4ea5..e4812538d 100644
--- a/init/init.c
+++ b/init/init.c
@@ -758,10 +758,26 @@ static void shutdown_system(void)
758static void exec_signal(int sig) 758static void exec_signal(int sig)
759{ 759{
760 struct init_action *a, *tmp; 760 struct init_action *a, *tmp;
761 sigset_t unblock_signals;
762
761 for (a = init_action_list; a; a = tmp) { 763 for (a = init_action_list; a; a = tmp) {
762 tmp = a->next; 764 tmp = a->next;
763 if (a->action & RESTART) { 765 if (a->action & RESTART) {
764 shutdown_system(); 766 shutdown_system();
767
768 /* unblock all signals, blocked in shutdown_system() */
769 sigemptyset(&unblock_signals);
770 sigaddset(&unblock_signals, SIGHUP);
771 sigaddset(&unblock_signals, SIGCHLD);
772 sigaddset(&unblock_signals, SIGUSR1);
773 sigaddset(&unblock_signals, SIGUSR2);
774 sigaddset(&unblock_signals, SIGINT);
775 sigaddset(&unblock_signals, SIGTERM);
776 sigaddset(&unblock_signals, SIGCONT);
777 sigaddset(&unblock_signals, SIGSTOP);
778 sigaddset(&unblock_signals, SIGTSTP);
779 sigprocmask(SIG_UNBLOCK, &unblock_signals, NULL);
780
765 message(CONSOLE|LOG, "\rTrying to re-exec %s\n", a->command); 781 message(CONSOLE|LOG, "\rTrying to re-exec %s\n", a->command);
766 execl(a->command, a->command, NULL); 782 execl(a->command, a->command, NULL);
767 783