Fix a non-working cast to get rid of a compiler warning.
[tinc] / src / net.c
index 5f3f6e7..c2c5d19 100644 (file)
--- 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-2013 Guus Sliepen <guus@tinc-vpn.org>
+                  2000-2015 Guus Sliepen <guus@tinc-vpn.org>
                   2006      Scott Lamb <slamb@slamb.org>
                   2011      Loïc Grenié <loic.grenie@gmail.com>
 
 #include "subnet.h"
 #include "xalloc.h"
 
-#ifdef HAVE_RESOLV_H
-#include <resolv.h>
-#endif
-
 int contradicting_add_edge = 0;
 int contradicting_del_edge = 0;
 static int sleeptime = 10;
@@ -156,7 +152,7 @@ static void timeout_handler(void *data) {
                        if(c->edge) {
                                try_tx(c->node, false);
                                if(c->status.pinged) {
-                                       logger(DEBUG_CONNECTIONS, LOG_INFO, "%s (%s) didn't respond to PING in %ld seconds", c->name, c->hostname, (long)now.tv_sec - c->last_ping_time);
+                                       logger(DEBUG_CONNECTIONS, LOG_INFO, "%s (%s) didn't respond to PING in %ld seconds", c->name, c->hostname, (long)(now.tv_sec - c->last_ping_time));
                                } else if(c->last_ping_time + pinginterval <= now.tv_sec) {
                                        send_ping(c);
                                        continue;
@@ -174,7 +170,7 @@ static void timeout_handler(void *data) {
 
        }
 
-       timeout_set(data, &(struct timeval){pingtimeout, rand() % 100000});
+       timeout_set(data, &(struct timeval){1, rand() % 100000});
 }
 
 static void periodic_handler(void *data) {
@@ -185,7 +181,7 @@ static void periodic_handler(void *data) {
 
        if(contradicting_del_edge > 100 && contradicting_add_edge > 100) {
                logger(DEBUG_ALWAYS, LOG_WARNING, "Possible node with same Name as us! Sleeping %d seconds.", sleeptime);
-               usleep(sleeptime * 1000000LL);
+               nanosleep(&(struct timespec){sleeptime, 0}, NULL);
                sleeptime *= 2;
                if(sleeptime < 0)
                        sleeptime = 3600;
@@ -313,15 +309,12 @@ static void sighup_handler(void *data) {
 
 static void sigalrm_handler(void *data) {
        logger(DEBUG_ALWAYS, LOG_NOTICE, "Got %s signal", strsignal(((signal_t *)data)->signum));
-#ifdef HAVE_DECL_RES_INIT
-       res_init();
-#endif
        retry();
 }
 #endif
 
 int reload_configuration(void) {
-       char *fname = NULL;
+       char fname[PATH_MAX];
 
        /* Reread our own configuration file */
 
@@ -335,9 +328,8 @@ int reload_configuration(void) {
 
        read_config_options(config_tree, NULL);
 
-       xasprintf(&fname, "%s" SLASH "hosts" SLASH "%s", confbase, myself->name);
+       snprintf(fname, sizeof fname, "%s" SLASH "hosts" SLASH "%s", confbase, myself->name);
        read_config_file(config_tree, fname);
-       free(fname);
 
        /* Parse some options that are allowed to be changed while tinc is running */
 
@@ -414,13 +406,12 @@ int reload_configuration(void) {
                if(c->status.control)
                        continue;
 
-               xasprintf(&fname, "%s" SLASH "hosts" SLASH "%s", confbase, c->name);
+               snprintf(fname, sizeof fname, "%s" SLASH "hosts" SLASH "%s", confbase, c->name);
                struct stat s;
                if(stat(fname, &s) || s.st_mtime > last_config_check) {
                        logger(DEBUG_CONNECTIONS, LOG_INFO, "Host config file of %s has been changed", c->name);
                        terminate_connection(c, c->edge);
                }
-               free(fname);
        }
 
        last_config_check = now.tv_sec;