From: Guus Sliepen <guus@tinc-vpn.org>
Date: Sun, 21 Oct 2012 15:45:16 +0000 (+0200)
Subject: Slightly randomize all timeouts.
X-Git-Tag: import-tinc-1.1~246
X-Git-Url: https://git.meshlink.io/?a=commitdiff_plain;h=edc08b73a9e353bde6db4c73866a6a730a1a7cb4;p=meshlink

Slightly randomize all timeouts.
---

diff --git a/src/net.c b/src/net.c
index b333c5b7..77ff1c8c 100644
--- a/src/net.c
+++ b/src/net.c
@@ -164,7 +164,7 @@ static void timeout_handler(int fd, short events, void *event) {
 		}
 	}
 
-	event_add(event, &(struct timeval){pingtimeout, 0});
+	event_add(event, &(struct timeval){pingtimeout, rand() % 100000});
 }
 
 static void periodic_handler(int fd, short events, void *event) {
@@ -278,7 +278,7 @@ static void periodic_handler(int fd, short events, void *event) {
 		}
 	}
 
-	event_add(event, &(struct timeval){5, 0});
+	event_add(event, &(struct timeval){5, rand() % 100000});
 }
 
 void handle_meta_connection_data(int fd, short events, void *data) {
@@ -449,10 +449,10 @@ int main_loop(void) {
 	struct event periodic_event;
 
 	timeout_set(&timeout_event, timeout_handler, &timeout_event);
-	event_add(&timeout_event, &(struct timeval){pingtimeout, 0});
+	event_add(&timeout_event, &(struct timeval){pingtimeout, rand() % 100000});
 
 	timeout_set(&periodic_event, periodic_handler, &periodic_event);
-	event_add(&periodic_event, &(struct timeval){5, 0});
+	event_add(&periodic_event, &(struct timeval){5, rand() % 100000});
 
 #ifndef HAVE_MINGW
 	struct event sighup_event;
diff --git a/src/net_packet.c b/src/net_packet.c
index 67ebc223..dc31fd7a 100644
--- a/src/net_packet.c
+++ b/src/net_packet.c
@@ -151,7 +151,7 @@ static void send_mtu_probe_handler(int fd, short events, void *data) {
 	}
 
 end:
-	event_add(&n->mtuevent, &(struct timeval){timeout, 0});
+	event_add(&n->mtuevent, &(struct timeval){timeout, rand() % 100000});
 }
 
 void send_mtu_probe(node_t *n) {
diff --git a/src/net_setup.c b/src/net_setup.c
index 74c57c5d..d53aad00 100644
--- a/src/net_setup.c
+++ b/src/net_setup.c
@@ -285,7 +285,7 @@ void regenerate_key(void) {
 		timeout_set(&keyexpire_event, keyexpire_handler, NULL);
 	}
 
-	event_add(&keyexpire_event, &(struct timeval){keylifetime, 0});
+	event_add(&keyexpire_event, &(struct timeval){keylifetime, rand() % 100000});
 }
 
 /*
diff --git a/src/net_socket.c b/src/net_socket.c
index 09c52070..ce1e3aa3 100644
--- a/src/net_socket.c
+++ b/src/net_socket.c
@@ -282,7 +282,7 @@ void retry_outgoing(outgoing_t *outgoing) {
 		outgoing->timeout = maxtimeout;
 
 	timeout_set(&outgoing->ev, retry_outgoing_handler, outgoing);
-	event_add(&outgoing->ev, &(struct timeval){outgoing->timeout, 0});
+	event_add(&outgoing->ev, &(struct timeval){outgoing->timeout, rand() % 100000});
 
 	logger(DEBUG_CONNECTIONS, LOG_NOTICE,
 			   "Trying to re-establish outgoing connection in %d seconds",
diff --git a/src/protocol.c b/src/protocol.c
index 3c08d725..34c3f3bb 100644
--- a/src/protocol.c
+++ b/src/protocol.c
@@ -180,7 +180,7 @@ bool seen_request(const char *request) {
 		new->request = xstrdup(request);
 		new->firstseen = time(NULL);
 		splay_insert(past_request_tree, new);
-		event_add(&past_request_event, &(struct timeval){10, 0});
+		event_add(&past_request_event, &(struct timeval){10, rand() % 100000});
 		return false;
 	}
 }
@@ -201,7 +201,7 @@ static void age_past_requests(int fd, short events, void *data) {
 			   deleted, left);
 
 	if(left)
-		event_add(&past_request_event, &(struct timeval){10, 0});
+		event_add(&past_request_event, &(struct timeval){10, rand() % 100000});
 }
 
 void init_requests(void) {
diff --git a/src/route.c b/src/route.c
index e874d892..e9d4ecec 100644
--- a/src/route.c
+++ b/src/route.c
@@ -209,7 +209,7 @@ static void age_subnets(int fd, short events, void *data) {
 	}
 
 	if(left)
-		event_add(&age_subnets_event, &(struct timeval){10, 0});
+		event_add(&age_subnets_event, &(struct timeval){10, rand() % 100000});
 }
 
 static void learn_mac(mac_t *address) {
@@ -238,7 +238,7 @@ static void learn_mac(mac_t *address) {
 
 		if(!timeout_initialized(&age_subnets_event))
 			timeout_set(&age_subnets_event, age_subnets, NULL);
-		event_add(&age_subnets_event, &(struct timeval){10, 0});
+		event_add(&age_subnets_event, &(struct timeval){10, rand() % 100000});
 	} else {
 		if(subnet->expires)
 			subnet->expires = time(NULL) + macexpire;