]> git.meshlink.io Git - meshlink/blobdiff - src/graph.c
Allow the mesh to detect when a node has completely restarted.
[meshlink] / src / graph.c
index 60ac3adfc362a50806ac93b3b5e44850813f2ef7..d86ac4a81e3ea560e8a14f15b9180399570d3d0a 100644 (file)
@@ -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;