]> git.meshlink.io Git - meshlink/blobdiff - src/net_setup.c
Immediately try connecting to the mesh after a succesful join.
[meshlink] / src / net_setup.c
index 02e90aefe078191777c7b29f19d2c91749af19aa..69b6e86a10460492e62d4b49e56c0cdfa0cee66f 100644 (file)
@@ -124,7 +124,7 @@ static bool read_invitation_key(meshlink_handle_t *mesh) {
        return mesh->invitation_key;
 }
 
-static void load_all_nodes(meshlink_handle_t *mesh) {
+void load_all_nodes(meshlink_handle_t *mesh) {
        DIR *dir;
        struct dirent *ent;
        char dname[PATH_MAX];
@@ -140,13 +140,13 @@ static void load_all_nodes(meshlink_handle_t *mesh) {
                if(!check_id(ent->d_name))
                        continue;
 
-               node_t *n = lookup_node(ent->d_name);
+               node_t *n = lookup_node(mesh, ent->d_name);
                if(n)
                        continue;
 
                n = new_node();
                n->name = xstrdup(ent->d_name);
-               node_add(n);
+               node_add(mesh, n);
        }
 
        closedir(dir);
@@ -323,9 +323,9 @@ bool setup_myself(meshlink_handle_t *mesh) {
        mesh->self->via = mesh->self;
        mesh->self->status.reachable = true;
        mesh->self->last_state_change = mesh->loop.now.tv_sec;
-       node_add(mesh->self);
+       node_add(mesh, mesh->self);
 
-       graph();
+       graph(mesh);
 
        if(autoconnect)
                load_all_nodes(mesh);
@@ -362,10 +362,10 @@ bool setup_myself(meshlink_handle_t *mesh) {
   initialize network
 */
 bool setup_network(meshlink_handle_t *mesh) {
-       init_connections();
-       init_nodes();
-       init_edges();
-       init_requests();
+       init_connections(mesh);
+       init_nodes(mesh);
+       init_edges(mesh);
+       init_requests(mesh);
 
        mesh->pinginterval = 60;
        mesh->pingtimeout = 5;
@@ -380,19 +380,19 @@ bool setup_network(meshlink_handle_t *mesh) {
 /*
   close all open network connections
 */
-void close_network_connections(void) {
+void close_network_connections(meshlink_handle_t *mesh) {
        for(list_node_t *node = mesh->connections->head, *next; node; node = next) {
                next = node->next;
                connection_t *c = node->data;
                c->outgoing = NULL;
-               terminate_connection(c, false);
+               terminate_connection(mesh, c, false);
        }
 
        if(mesh->outgoings)
                list_delete_list(mesh->outgoings);
 
        if(mesh->self && mesh->self->connection) {
-               terminate_connection(mesh->self->connection, false);
+               terminate_connection(mesh, mesh->self->connection, false);
                free_connection(mesh->self->connection);
        }
 
@@ -403,10 +403,10 @@ void close_network_connections(void) {
                close(mesh->listen_socket[i].udp.fd);
        }
 
-       exit_requests();
-       exit_edges();
-       exit_nodes();
-       exit_connections();
+       exit_requests(mesh);
+       exit_edges(mesh);
+       exit_nodes(mesh);
+       exit_connections(mesh);
 
        if(mesh->myport) free(mesh->myport);