X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fprocess.c;h=bf3d6b74f36e38c1c3547ed257264dd7fcef5468;hp=35793a27e66cce6a613799d868bc5a584b2f27ed;hb=44e9d6a2872fac55f7eb701ba576ed9f39a22e08;hpb=125c4978812cffa5154ce5378a276f43f78417d8 diff --git a/src/process.c b/src/process.c index 35793a27..bf3d6b74 100644 --- a/src/process.c +++ b/src/process.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: process.c,v 1.1.2.21 2001/03/01 21:32:04 guus Exp $ + $Id: process.c,v 1.1.2.23 2001/07/24 20:03:40 guus Exp $ */ #include "config.h" @@ -164,7 +164,7 @@ cp { if(daemon(0, 0) < 0) { - fprintf(stderr, _("Couldn't detach from terminal: %m")); + fprintf(stderr, _("Couldn't detach from terminal: %s"), strerror(errno)); return -1; } @@ -375,6 +375,16 @@ unexpected_signal_handler(int a, siginfo_t *info, void *b) cp_trace(); } +RETSIGTYPE +ignore_signal_handler(int a, siginfo_t *info, void *b) +{ + if(debug_lvl >= DEBUG_SCARY_THINGS) + { + syslog(LOG_WARNING, _("Got unexpected signal %d (%s)"), a, strsignal(a)); + cp_trace(); + } +} + struct { int signal; void (*handler)(int, siginfo_t *, void *); @@ -383,11 +393,12 @@ struct { { SIGTERM, sigterm_handler }, { SIGQUIT, sigquit_handler }, { SIGSEGV, sigsegv_handler }, - { SIGPIPE, NULL }, + { SIGPIPE, ignore_signal_handler }, { SIGINT, sigint_handler }, { SIGUSR1, sigusr1_handler }, { SIGUSR2, sigusr2_handler }, - { SIGCHLD, NULL }, + { SIGCHLD, ignore_signal_handler }, + { SIGALRM, ignore_signal_handler }, { 0, NULL } }; @@ -407,7 +418,7 @@ setup_signals(void) for(i = 0; i < NSIG; i++) { act.sa_sigaction = unexpected_signal_handler; - sigaction(sighandlers[i].signal, &act, NULL); + sigaction(i, &act, NULL); } /* Then, for each known signal that we want to catch, assign a @@ -416,7 +427,7 @@ setup_signals(void) { act.sa_sigaction = sighandlers[i].handler; if(sigaction(sighandlers[i].signal, &act, NULL) < 0) - fprintf(stderr, _("Installing signal handler for signal %d (%s) failed: %m\n"), - sighandlers[i].signal, strsignal(sighandlers[i].signal)); + fprintf(stderr, _("Installing signal handler for signal %d (%s) failed: %s\n"), + sighandlers[i].signal, strsignal(sighandlers[i].signal), strerror(errno)); } }