X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Ftincd.c;h=f63540aa9e4ce2fbffca28cfb82dc084eeb2f945;hp=5aafb96568901c5c4bcf210759fd573d78ba0217;hb=24874d0806bac5d75663ea9de67a71171bfc97b6;hpb=18c85caac36f7236454deef11b9eba74328dbd96 diff --git a/src/tincd.c b/src/tincd.c index 5aafb965..f63540aa 100644 --- a/src/tincd.c +++ b/src/tincd.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: tincd.c,v 1.10.4.4 2000/06/29 17:09:08 guus Exp $ + $Id: tincd.c,v 1.10.4.6 2000/06/30 11:45:16 guus Exp $ */ #include "config.h" @@ -62,7 +62,7 @@ static int kill_tincd = 0; static int do_detach = 1; char *confbase = NULL; /* directory in which all config files are */ -char *configfilename = NULL; /* configuration file name */ +/* char *configfilename = NULL; /* configuration file name, moved to config.c */ char *identname; /* program name for syslog */ char *netname = NULL; /* name of the vpn network */ char *pidfilename; /* pid file location */ @@ -374,13 +374,17 @@ main(int argc, char **argv, char **envp) if(security_init()) return 1; - if(setup_network_connections()) - cleanup_and_exit(1); + for(;;) + { + setup_network_connections(); + + main_loop(); - main_loop(); + cleanup_and_exit(1); - cleanup_and_exit(1); - return 1; + syslog(LOG_ERR, _("Unrecoverable error, restarting in %d seconds!"), MAXTIMEOUT); + sleep(MAXTIMEOUT); + } } RETSIGTYPE @@ -416,7 +420,6 @@ sigsegv_handler(int a) syslog(LOG_NOTICE, _("Got SEGV signal, trying to re-execute")); signal(SIGSEGV, sigsegv_square); - close_network_connections(); remove_pid(pidfilename); execvp(g_argv[0], g_argv); @@ -426,17 +429,15 @@ RETSIGTYPE sighup_handler(int a) { if(debug_lvl > 0) - syslog(LOG_NOTICE, _("Got HUP signal")); - close_network_connections(); - setup_network_connections(); - /* FIXME: read config-file and re-establish network connections */ + syslog(LOG_NOTICE, _("Got HUP signal, rereading configuration and restarting")); + sighup = 1; } RETSIGTYPE sigint_handler(int a) { if(debug_lvl > 0) - syslog(LOG_NOTICE, _("Got INT signal")); + syslog(LOG_NOTICE, _("Got INT signal, exiting")); cleanup_and_exit(0); } @@ -450,7 +451,7 @@ RETSIGTYPE sigusr2_handler(int a) { if(debug_lvl > 1) - syslog(LOG_NOTICE, _("Forcing new key generation")); + syslog(LOG_NOTICE, _("Got USR2 signal, forcing new key generation")); regenerate_keys(); }