diff --git a/src/graph.c b/src/graph.c index 5e794715..15ed0554 100644 --- a/src/graph.c +++ b/src/graph.c @@ -149,6 +149,7 @@ static void sssp_bfs(void) { myself->status.visited = true; myself->status.indirect = false; + myself->status.reachable = true; myself->nexthop = myself; myself->prevedge = NULL; myself->via = myself; @@ -205,7 +206,7 @@ static void sssp_bfs(void) { e->to->options = e->options; e->to->distance = n->distance + 1; - if(!e->to->status.reachable || (e->to->address.sa.sa_family == AF_UNSPEC && e->address.sa.sa_family != AF_UNKNOWN)) + if(!e->to->status.reachable || (e->to != myself && e->to->address.sa.sa_family == AF_UNSPEC && e->address.sa.sa_family != AF_UNKNOWN)) update_node_udp(e->to, &e->address); list_insert_tail(todo_list, e->to); diff --git a/src/net_setup.c b/src/net_setup.c index 5afad112..09580739 100644 --- a/src/net_setup.c +++ b/src/net_setup.c @@ -329,14 +329,13 @@ void regenerate_key(void) { } void update_edge_weight(void) { - logger(DEBUG_STATUS, LOG_INFO, "Update edge weight"); for list_each(connection_t, c, connection_list) { if (c->status.control || !c->edge) continue; if (c->edge->avg_rtt && (c->edge->weight != c->edge->avg_rtt*10)) { - logger(DEBUG_STATUS, LOG_INFO, "update_edge_weight(): %s -> %s (%d -> %d)", c->edge->from->name, + logger(DEBUG_STATUS, LOG_INFO, "%s: %s -> %s (%d -> %d)", __FUNCTION__, c->edge->from->name, c->edge->to->name, c->edge->weight, c->edge->avg_rtt*10);