X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprotocol.c;h=34c3f3bb62c95c22ee9a0fc63ccd1250ab5fb4d4;hb=8a77df9e28114cbfd83351070fdb266cf31fc310;hp=1153d61fed56017f9ca07638cb869012b5959d7b;hpb=6396f42d74f22ab5f8e736dc5cb04c57917f9319;p=tinc diff --git a/src/protocol.c b/src/protocol.c index 1153d61f..34c3f3bb 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -180,21 +180,16 @@ 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; } } static void age_past_requests(int fd, short events, void *data) { - splay_node_t *node, *next; - past_request_t *p; int left = 0, deleted = 0; time_t now = time(NULL); - for(node = past_request_tree->head; node; node = next) { - next = node->next; - p = node->data; - + for splay_each(past_request_t, p, past_request_tree) { if(p->firstseen + pinginterval <= now) splay_delete_node(past_request_tree, node), deleted++; else @@ -206,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) {