+static node_t *try_harder(const sockaddr_t *from, const vpn_packet_t *pkt) {
+ splay_node_t *node;
+ node_t *n, *found = NULL;
+ static time_t last_hard_try = 0;
+ time_t now = time(NULL);
+
+ if(last_hard_try == now)
+ return NULL;
+ else
+ last_hard_try = now;
+
+ for(node = node_tree->head; node; node = node->next) {
+ n = node->data;
+
+ if(n == myself || !n->status.reachable || !digest_active(&n->indigest))
+ continue;
+
+ if(try_mac(n, pkt)) {
+ found = n;
+ break;
+ }
+ }
+
+ return found;
+}
+
+void handle_incoming_vpn_data(int sock, short events, void *data) {