Slightly randomize all timeouts.
authorGuus Sliepen <guus@tinc-vpn.org>
Sun, 21 Oct 2012 15:45:16 +0000 (17:45 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Sun, 21 Oct 2012 15:45:16 +0000 (17:45 +0200)
src/net.c
src/net_packet.c
src/net_setup.c
src/net_socket.c
src/protocol.c
src/route.c

index b333c5b7b05777595ede76205b18921953a7f70e..77ff1c8ce33c4880e807276be8582340e5776244 100644 (file)
--- 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;
index 67ebc223624931baecd4f7fa44761ce1105839f5..dc31fd7acd1c17e8bfb5a38f4eb6e357b3f19200 100644 (file)
@@ -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) {
index 74c57c5dd07cfadbcaaa3a9ebc94034da3716aaf..d53aad004f28dc2d461b02714c0f1c89ad9abdd2 100644 (file)
@@ -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});
 }
 
 /*
index 09c5207034ca10c2fc7e790e54ce495e03f7c9ae..ce1e3aa3e65ed1091fe1400c0937b846a586a045 100644 (file)
@@ -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",
index 3c08d725b56d608709ccbd47a10b5d7c0bb056ed..34c3f3bb62c95c22ee9a0fc63ccd1250ab5fb4d4 100644 (file)
@@ -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) {
index e874d8926dd1909179cf3bd354ebbb6fc61c5bb1..e9d4ecec16863aeb5cc10cc5e0d6a4c454e545d0 100644 (file)
@@ -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;