X-Git-Url: http://git.meshlink.io/?p=meshlink;a=blobdiff_plain;f=src%2Fgraph.c;h=d86ac4a81e3ea560e8a14f15b9180399570d3d0a;hp=60ac3adfc362a50806ac93b3b5e44850813f2ef7;hb=947f09ff2c507a80bbe7f92ed0d41b06c98d5375;hpb=f9235480fa69f92b50156ac8b6a70f3558bb0bbf diff --git a/src/graph.c b/src/graph.c index 60ac3adf..d86ac4a8 100644 --- a/src/graph.c +++ b/src/graph.c @@ -196,6 +196,15 @@ static void check_reachability(meshlink_handle_t *mesh) { /* Check reachability status. */ for splay_each(node_t, n, mesh->nodes) { + /* Check for nodes that have changed session_id */ + if(n->status.visited && n->prevedge && n->prevedge->reverse->session_id != n->session_id) { + n->session_id = n->prevedge->reverse->session_id; + + if(n->utcp) { + utcp_abort_all_connections(n->utcp); + } + } + if(n->status.visited != n->status.reachable) { n->status.reachable = !n->status.reachable; n->last_state_change = mesh->loop.now.tv_sec;