X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fgraph.c;h=2b76194fc65224d59bed75a231cf89a56a5cc8d2;hb=ea294dac41365a08a77b64c62c0ba630292d7a07;hp=2453d6f1c21f52414be0f0d849f54b5130300354;hpb=ae1d95cee66f3e5c6475f03b441d455e436e9ee8;p=meshlink diff --git a/src/graph.c b/src/graph.c index 2453d6f1..2b76194f 100644 --- a/src/graph.c +++ b/src/graph.c @@ -150,11 +150,11 @@ static void sssp_bfs(meshlink_handle_t *mesh) { /* Situation: - / - / + / + / ----->(n)---e-->(e->to) - \ - \ + \ + \ Where e is an edge, (n) and (e->to) are nodes. n->address is set to the e->address of the edge left of n to n. @@ -168,8 +168,8 @@ static void sssp_bfs(meshlink_handle_t *mesh) { bool indirect = n->status.indirect || e->options & OPTION_INDIRECT; if(e->to->status.visited - && (!e->to->status.indirect || indirect) - && (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight)) + && (!e->to->status.indirect || indirect) + && (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight)) continue; e->to->status.visited = true; @@ -201,13 +201,10 @@ static void check_reachability(meshlink_handle_t *mesh) { n->status.reachable = !n->status.reachable; n->last_state_change = mesh->loop.now.tv_sec; - if(n->status.reachable) { - logger(mesh, MESHLINK_DEBUG, "Node %s (%s) became reachable", - n->name, n->hostname); - } else { - logger(mesh, MESHLINK_DEBUG, "Node %s (%s) became unreachable", - n->name, n->hostname); - } + if(n->status.reachable) + logger(mesh, MESHLINK_DEBUG, "Node %s became reachable", n->name); + else + logger(mesh, MESHLINK_DEBUG, "Node %s became unreachable", n->name); /* TODO: only clear status.validkey if node is unreachable? */ @@ -223,12 +220,11 @@ static void check_reachability(meshlink_handle_t *mesh) { timeout_del(&mesh->loop, &n->mtutimeout); - if(mesh->node_status_cb) - mesh->node_status_cb(mesh, (meshlink_node_t *)n, n->status.reachable); + update_node_status(mesh, n); if(!n->status.reachable) { update_node_udp(mesh, n, NULL); - memset(&n->status, 0, sizeof n->status); + memset(&n->status, 0, sizeof(n)->status); n->options = 0; } else if(n->connection) { if(n->connection->outgoing)