In sssp_bfs(), never try to update myself.
authorGuus Sliepen <guus@tinc-vpn.org>
Wed, 22 Jul 2015 12:33:56 +0000 (14:33 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Wed, 22 Jul 2015 12:33:56 +0000 (14:33 +0200)
src/graph.c

index 56ebb61..e570feb 100644 (file)
@@ -149,7 +149,7 @@ static void sssp_bfs(void) {
                        abort();
 
                for splay_each(edge_t, e, n->edge_tree) {       /* "e" is the edge connected to "from" */
-                       if(!e->reverse)
+                       if(!e->reverse || e->to == myself)
                                continue;
 
                        /* Situation:
@@ -173,7 +173,7 @@ static void sssp_bfs(void) {
 
                        if(e->to->status.visited
                           && (!e->to->status.indirect || indirect)
-                          && (e->to->prevedge && (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight)))
+                          && (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight))
                                continue;
 
                        // Only update nexthop if it doesn't increase the path length