]> git.meshlink.io Git - meshlink/blobdiff - src/graph.c
Fix potential segmentation fault on iOS.
[meshlink] / src / graph.c
index 18376c14956a619a9e99441365fd44c42a7cfa18..e6212116528a64d17bb0b03d5e209ace106158fe 100644 (file)
@@ -72,7 +72,7 @@ static void sssp_bfs(meshlink_handle_t *mesh) {
 
        /* Begin with mesh->self */
 
-       mesh->self->status.visited = true;
+       mesh->self->status.visited = mesh->threadstarted;
        mesh->self->nexthop = mesh->self;
        mesh->self->prevedge = NULL;
        mesh->self->distance = 0;
@@ -175,7 +175,12 @@ static void check_reachability(meshlink_handle_t *mesh) {
 
                        if(n->status.reachable) {
                                logger(mesh, MESHLINK_DEBUG, "Node %s became reachable", n->name);
+                               bool first_time_reachable = !n->last_reachable;
                                n->last_reachable = mesh->loop.now.tv_sec;
+
+                               if(first_time_reachable) {
+                                       node_write_config(mesh, n);
+                               }
                        } else {
                                logger(mesh, MESHLINK_DEBUG, "Node %s became unreachable", n->name);
                                n->last_unreachable = mesh->loop.now.tv_sec;