From: Guus Sliepen Date: Sun, 8 May 2011 10:40:44 +0000 (+0200) Subject: Always use the default signal handler for ABRT signals. X-Git-Tag: release-1.0.14~5 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=257cb6ac60bb0924720de9e252cdf7f4759bf741;p=oweals%2Ftinc.git Always use the default signal handler for ABRT signals. This will allow coredumps to be generated when tinc is daemonized. Also add the -kABRT option. --- diff --git a/src/netutl.c b/src/netutl.c index 6acdffa..56fb65f 100644 --- a/src/netutl.c +++ b/src/netutl.c @@ -93,8 +93,7 @@ void sockaddr2str(const sockaddr_t *sa, char **addrstr, char **portstr) { if(err) { logger(LOG_ERR, "Error while translating addresses: %s", gai_strerror(err)); - raise(SIGFPE); - exit(0); + abort(); } scopeid = strchr(address, '%'); @@ -155,8 +154,7 @@ int sockaddrcmp_noport(const sockaddr_t *a, const sockaddr_t *b) { default: logger(LOG_ERR, "sockaddrcmp() was called with unknown address family %d, exitting!", a->sa.sa_family); - raise(SIGFPE); - exit(0); + abort(); } } @@ -199,8 +197,7 @@ int sockaddrcmp(const sockaddr_t *a, const sockaddr_t *b) { default: logger(LOG_ERR, "sockaddrcmp() was called with unknown address family %d, exitting!", a->sa.sa_family); - raise(SIGFPE); - exit(0); + abort(); } } diff --git a/src/process.c b/src/process.c index 0007943..a3de065 100644 --- a/src/process.c +++ b/src/process.c @@ -546,6 +546,7 @@ static struct { {SIGCHLD, ignore_signal_handler}, {SIGALRM, sigalrm_handler}, {SIGWINCH, sigwinch_handler}, + {SIGABRT, SIG_DFL}, {0, NULL} }; #endif diff --git a/src/tincd.c b/src/tincd.c index 7758151..9aec320 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -203,6 +203,8 @@ static bool parse_options(int argc, char **argv) { kill_tincd = SIGINT; else if(!strcasecmp(optarg, "ALRM")) kill_tincd = SIGALRM; + else if(!strcasecmp(optarg, "ABRT")) + kill_tincd = SIGABRT; else { kill_tincd = atoi(optarg);