X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet.c;h=8a63615d658b6321ac1df565dc708be177037f59;hb=fc119fb0096a9221f2cff279b07c886bcd794d28;hp=fe272db8c4f26639335edeca495ddbdb451466f5;hpb=6bc5d626a8726fc23365ee705761a3c666a08ad4;p=tinc diff --git a/src/net.c b/src/net.c index fe272db8..8a63615d 100644 --- a/src/net.c +++ b/src/net.c @@ -1,7 +1,7 @@ /* net.c -- most of the network code Copyright (C) 1998-2005 Ivo Timmermans, - 2000-2012 Guus Sliepen + 2000-2013 Guus Sliepen 2006 Scott Lamb 2011 Loïc Grenié @@ -29,6 +29,7 @@ #include "graph.h" #include "logger.h" #include "meta.h" +#include "names.h" #include "net.h" #include "netutl.h" #include "process.h" @@ -223,7 +224,7 @@ static void periodic_handler(void *data) { if(!found) { logger(DEBUG_CONNECTIONS, LOG_INFO, "Autoconnecting to %s", n->name); - outgoing_t *outgoing = xmalloc_and_zero(sizeof *outgoing); + outgoing_t *outgoing = xzalloc(sizeof *outgoing); outgoing->name = xstrdup(n->name); list_insert_tail(outgoing_list, outgoing); setup_outgoing_connection(outgoing); @@ -280,29 +281,13 @@ static void periodic_handler(void *data) { } void handle_meta_connection_data(connection_t *c) { - int result; - socklen_t len = sizeof result; - - if(c->status.connecting) { - c->status.connecting = false; - - getsockopt(c->socket, SOL_SOCKET, SO_ERROR, &result, &len); - - if(!result) - finish_connecting(c); - else { - logger(DEBUG_CONNECTIONS, LOG_DEBUG, "Error while connecting to %s (%s): %s", c->name, c->hostname, sockstrerror(result)); - terminate_connection(c, false); - return; - } - } - if (!receive_meta(c)) { terminate_connection(c, c->status.active); return; } } +#ifndef HAVE_MINGW static void sigterm_handler(void *data) { logger(DEBUG_ALWAYS, LOG_NOTICE, "Got %s signal", strsignal(((signal_t *)data)->signum)); event_exit(); @@ -318,9 +303,10 @@ static void sigalrm_handler(void *data) { logger(DEBUG_ALWAYS, LOG_NOTICE, "Got %s signal", strsignal(((signal_t *)data)->signum)); retry(); } +#endif int reload_configuration(void) { - char *fname; + char *fname = NULL; /* Reread our own configuration file */ @@ -420,7 +406,7 @@ int reload_configuration(void) { free(fname); } - last_config_check = time(NULL); + last_config_check = now.tv_sec; return 0; } @@ -451,11 +437,13 @@ int main_loop(void) { signal_t sighup = {0}; signal_t sigterm = {0}; signal_t sigquit = {0}; + signal_t sigint = {0}; signal_t sigalrm = {0}; signal_add(&sighup, sighup_handler, &sighup, SIGHUP); signal_add(&sigterm, sigterm_handler, &sigterm, SIGTERM); signal_add(&sigquit, sigterm_handler, &sigquit, SIGQUIT); + signal_add(&sigint, sigterm_handler, &sigint, SIGINT); signal_add(&sigalrm, sigalrm_handler, &sigalrm, SIGALRM); #endif