]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink.c
Check for key later because maybe we have to generate it
[meshlink] / src / meshlink.c
index 7ea3e440b0f941d773c06eba53a267b0199b7508..af248044650af88ef395f27e6542f287bf3acb02 100644 (file)
@@ -508,6 +508,7 @@ static bool finalize_join(meshlink_handle_t *mesh) {
        free(mesh->self->name);
        free(mesh->self->connection->name);
        mesh->self->name = xstrdup(name);
+       mesh->name = xstrdup(name);
        mesh->self->connection->name = xstrdup(name);
 
        fprintf(stderr, "Configuration stored in: %s\n", mesh->confbase);
@@ -737,6 +738,9 @@ 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();
+       init_nodes(mesh);
        pthread_mutex_init ( &(mesh->outpacketqueue_mutex), NULL);
        pthread_mutex_init ( &(mesh->nodes_mutex), NULL);
        mesh->threadstarted = false;
@@ -773,11 +777,8 @@ 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;
+       if(!read_ecdsa_private_key(mesh))
+               return false;
 
        return mesh;
 }
@@ -800,6 +801,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
 
@@ -837,6 +842,8 @@ void meshlink_close(meshlink_handle_t *mesh) {
        exit_configuration(&mesh->config);
        event_loop_exit(&mesh->loop);
 
+       free(mesh);
+
 #ifdef HAVE_MINGW
        WSACleanup();
 #endif