]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink.c
Finally no more segmentation faults using invitations :)
[meshlink] / src / meshlink.c
index e5982721d533aadd2cafb8e775f6dcb7b1555916..44ea0b7078b8ecfc567e275fcb332262ff3f5a5b 100644 (file)
@@ -737,6 +737,11 @@ meshlink_handle_t *meshlink_open(const char *confbase, const char *name) {
        meshlink_handle_t *mesh = xzalloc(sizeof *mesh);
        mesh->confbase = xstrdup(confbase);
        if (usingname) mesh->name = xstrdup(name);
+       mesh->self = new_node();
+       mesh->self->connection = new_connection();
+       if(!read_ecdsa_private_key(mesh))
+               return false;
+       init_nodes(mesh);
        pthread_mutex_init ( &(mesh->outpacketqueue_mutex), NULL);
        pthread_mutex_init ( &(mesh->nodes_mutex), NULL);
        mesh->threadstarted = false;
@@ -773,11 +778,6 @@ meshlink_handle_t *meshlink_open(const char *confbase, const char *name) {
        WSAStartup(MAKEWORD(2, 2), &wsa_state);
 #endif
 
-       // Setup up everything
-       // TODO: we should not open listening sockets yet
-
-       if(!setup_network(mesh))
-               return meshlink_close(mesh), NULL;
 
        return mesh;
 }
@@ -800,6 +800,10 @@ bool meshlink_start(meshlink_handle_t *mesh) {
                fprintf(stderr, "No name given!\n");
                return false;
        }
+       // Setup up everything
+
+       if(!setup_network(mesh))
+               return meshlink_close(mesh), NULL;
 
        // Start the main thread