X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet.c;h=7ce4f318bd732486770de4ee8adc68762da25104;hb=3b237afbda86bc95703ed25386cc9a26695d4602;hp=aae73969001577a9f4110adcc528db47b90405d9;hpb=386c1aff08a3ce6e295931e2fcf4bfc607053ff0;p=tinc diff --git a/src/net.c b/src/net.c index aae73969..7ce4f318 100644 --- a/src/net.c +++ b/src/net.c @@ -248,6 +248,11 @@ static void sighup_handler(int signal, short events, void *data) { reload_configuration(); } +static void sigalrm_handler(int signal, short events, void *data) { + logger(LOG_NOTICE, "Got %s signal", strsignal(signal)); + retry(); +} + int reload_configuration(void) { connection_t *c; splay_node_t *node, *next; @@ -349,24 +354,24 @@ void retry(void) { */ int main_loop(void) { struct event timeout_event; - struct event sighup_event; - struct event sigterm_event; - struct event sigquit_event; timeout_set(&timeout_event, timeout_handler, &timeout_event); event_add(&timeout_event, &(struct timeval){pingtimeout, 0}); -#ifdef SIGHUP +#ifndef HAVE_MINGW + struct event sighup_event; + struct event sigterm_event; + struct event sigquit_event; + struct event sigalrm_event; + signal_set(&sighup_event, SIGHUP, sighup_handler, NULL); signal_add(&sighup_event, NULL); -#endif -#ifdef SIGTERM signal_set(&sigterm_event, SIGTERM, sigterm_handler, NULL); signal_add(&sigterm_event, NULL); -#endif -#ifdef SIGQUIT signal_set(&sigquit_event, SIGQUIT, sigterm_handler, NULL); signal_add(&sigquit_event, NULL); + signal_set(&sigalrm_event, SIGALRM, sigalrm_handler, NULL); + signal_add(&sigalrm_event, NULL); #endif if(event_loop(0) < 0) { @@ -374,12 +379,14 @@ int main_loop(void) { return 1; } +#ifndef HAVE_MINGW signal_del(&sighup_event); signal_del(&sigterm_event); signal_del(&sigquit_event); + signal_del(&sigalrm_event); +#endif - if(timeout_initialized(&timeout_event)) - event_del(&timeout_event); + event_del(&timeout_event); return 0; }