+static timeout_t past_request_timeout;
+
+static void age_past_requests(event_loop_t *loop, void *data) {
+ meshlink_handle_t *mesh = loop->data;
+ int left = 0, deleted = 0;
+
+ for splay_each(past_request_t, p, past_request_tree) {
+ if(p->firstseen + mesh->pinginterval <= mesh->loop.now.tv_sec)
+ splay_delete_node(past_request_tree, node), deleted++;
+ else
+ left++;
+ }
+
+ if(left || deleted)
+ logger(DEBUG_SCARY_THINGS, LOG_DEBUG, "Aging past requests: deleted %d, left %d", deleted, left);
+
+ if(left)
+ timeout_set(&mesh->loop, &past_request_timeout, &(struct timeval){10, rand() % 100000});
+}