Drop libevent and use our own event handling again.
[tinc] / src / graph.c
index 86b62a5..73db3b2 100644 (file)
@@ -125,13 +125,13 @@ static void sssp_bfs(void) {
 
        /* Loop while todo_list is filled */
 
-       for list_each(node_t, n, todo_list) {                   /* "n" is the node from which we start */
+       for list_each(node_t, n, todo_list) {                   /* "n" is the node from which we start */
                logger(DEBUG_SCARY_THINGS, LOG_DEBUG, " Examining edges from %s", n->name);
 
                if(n->distance < 0)
                        abort();
 
-               for splay_each(edge_t, e, n->edge_tree) {       /* "e" is the edge connected to "from" */
+               for splay_each(edge_t, e, n->edge_tree) {       /* "e" is the edge connected to "from" */
                        if(!e->reverse)
                                continue;
 
@@ -208,12 +208,12 @@ static void check_reachability(void) {
                        }
                        n->last_req_key = 0;
 
+                       n->status.udp_confirmed = false;
                        n->maxmtu = MTU;
                        n->minmtu = 0;
                        n->mtuprobes = 0;
 
-                       if(timeout_initialized(&n->mtuevent))
-                               event_del(&n->mtuevent);
+                       timeout_del(&n->mtutimeout);
 
                        char *name;
                        char *address;
@@ -245,6 +245,8 @@ static void check_reachability(void) {
 
                        if(!n->status.reachable) {
                                update_node_udp(n, NULL);
+                               memset(&n->status, 0, sizeof n->status);
+                               n->options = 0;
                        } else if(n->connection) {
                                if(n->status.sptps) {
                                        if(n->connection->outgoing)