X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Ffatal-signal.c;h=ac9e2a59f559b514eeb3680773aa739425b612e2;hb=a846b3519b004f95d2b3ab0aabd756f27f8c881d;hp=95f54ff9c45886f93e40eb24d2f85a5f01860d58;hpb=3cc1ae6a32572e58b46dfdf8c0d1a7c00f01f22f;p=sliver-openvswitch.git diff --git a/lib/fatal-signal.c b/lib/fatal-signal.c index 95f54ff9c..ac9e2a59f 100644 --- a/lib/fatal-signal.c +++ b/lib/fatal-signal.c @@ -64,6 +64,9 @@ static int block_level = 0; /* Signal mask saved by outermost signal blocker. */ static sigset_t saved_signal_mask; +/* Disabled by fatal_signal_fork()? */ +static bool disabled; + static void call_sigprocmask(int how, sigset_t* new_set, sigset_t* old_set); static void atexit_handler(void); static void call_hooks(int sig_nr); @@ -105,11 +108,11 @@ fatal_signal_block() sigaddset(&fatal_signal_set, sig_nr); if (sigaction(sig_nr, NULL, &old_sa)) { - fatal(errno, "sigaction"); + ofp_fatal(errno, "sigaction"); } if (old_sa.sa_handler == SIG_DFL && signal(sig_nr, fatal_signal_handler) == SIG_ERR) { - fatal(errno, "signal"); + ofp_fatal(errno, "signal"); } } atexit(atexit_handler); @@ -156,7 +159,9 @@ fatal_signal_handler(int sig_nr) static void atexit_handler(void) { - call_hooks(0); + if (!disabled) { + call_hooks(0); + } } static void @@ -179,7 +184,6 @@ call_hooks(int sig_nr) static char **files; static size_t n_files, max_files; -static bool disabled; static void unlink_files(void *aux); static void do_unlink_files(void); @@ -231,12 +235,10 @@ unlink_files(void *aux UNUSED) static void do_unlink_files(void) { - if (!disabled) { - size_t i; + size_t i; - for (i = 0; i < n_files; i++) { - unlink(files[i]); - } + for (i = 0; i < n_files; i++) { + unlink(files[i]); } }