Don't try to add a non-existing node back to the node_udp_tree.
[tinc] / src / graph.c
index a3fe0ce..491a59f 100644 (file)
@@ -226,7 +226,9 @@ void sssp_bfs(void)
                                        free(e->to->hostname);
 
                                e->to->hostname = sockaddr2hostname(&e->to->address);
-                               avl_insert_node(node_udp_tree, node);
+
+                               if(node)
+                                       avl_insert_node(node_udp_tree, node);
 
                                if(e->to->options & OPTION_PMTU_DISCOVERY) {
                                        e->to->mtuprobes = 0;
@@ -258,9 +260,11 @@ void sssp_bfs(void)
                        if(n->status.reachable) {
                                ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Node %s (%s) became reachable"),
                                           n->name, n->hostname);
+                               avl_insert(node_udp_tree, n);
                        } else {
                                ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Node %s (%s) became unreachable"),
                                           n->name, n->hostname);
+                               avl_delete(node_udp_tree, n);
                        }
 
                        n->status.validkey = false;