X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprocess.c;h=ee5fce97fcda59620f91fc468339c308378510c4;hb=33f241d97852d7a171f1aaf1bda7f66356ff889e;hp=19c39801c3bbdbdbb3dd73e265349aa5f6181177;hpb=af2e0c9a32642065aedd2e67ca1f5791ca7a407d;p=tinc diff --git a/src/process.c b/src/process.c index 19c39801..ee5fce97 100644 --- a/src/process.c +++ b/src/process.c @@ -26,6 +26,7 @@ #include "device.h" #include "edge.h" #include "logger.h" +#include "net.h" #include "node.h" #include "process.h" #include "subnet.h" @@ -222,9 +223,13 @@ bool init_service(void) { Detach from current terminal */ bool detach(void) { - setup_signals(); - #ifndef HAVE_MINGW + signal(SIGALRM, SIG_IGN); + signal(SIGPIPE, SIG_IGN); + signal(SIGUSR1, SIG_IGN); + signal(SIGUSR2, SIG_IGN); + signal(SIGWINCH, SIG_IGN); + closelogger(); #endif @@ -324,40 +329,3 @@ bool execute_script(const char *name, char **envp) { #endif return true; } - - -/* - Signal handlers. -*/ - -#ifndef HAVE_MINGW -static RETSIGTYPE ignore_signal_handler(int a) { - ifdebug(SCARY_THINGS) logger(LOG_DEBUG, "Ignored signal %d (%s)", a, strsignal(a)); -} - -static struct { - int signal; - void (*handler)(int); -} sighandlers[] = { - {SIGPIPE, ignore_signal_handler}, - {SIGCHLD, ignore_signal_handler}, - {0, NULL} -}; -#endif - -void setup_signals(void) { -#ifndef HAVE_MINGW - int i; - struct sigaction act = {{NULL}}; - - sigemptyset(&act.sa_mask); - - for(i = 0; sighandlers[i].signal; i++) { - act.sa_handler = sighandlers[i].handler; - if(sigaction(sighandlers[i].signal, &act, NULL) < 0) - fprintf(stderr, "Installing signal handler for signal %d (%s) failed: %s\n", - sighandlers[i].signal, strsignal(sighandlers[i].signal), - strerror(errno)); - } -#endif -}