]> git.meshlink.io Git - meshlink/blobdiff - src/net_setup.c
Fix a crash when meshlink_open() is called with an invalid confbase.
[meshlink] / src / net_setup.c
index 298a1819f9400759f4dd8849e9374c9e7149ffc2..ce9a59ad230b0723e5bafeed12f312fed629b4a5 100644 (file)
@@ -80,7 +80,7 @@ bool read_ecdsa_public_key(meshlink_handle_t *mesh, connection_t *c) {
        return false;
 }
 
-static bool read_ecdsa_private_key(meshlink_handle_t *mesh) {
+bool read_ecdsa_private_key(meshlink_handle_t *mesh) {
        FILE *fp;
        char filename[PATH_MAX];
 
@@ -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];
@@ -265,12 +265,11 @@ static bool add_listen_address(meshlink_handle_t *mesh, char *address, bool bind
   Configure node_t mesh->self and set up the local sockets (listen only)
 */
 bool setup_myself(meshlink_handle_t *mesh) {
-       char *name, *hostname, *cipher, *digest, *type;
+       char *name;
        char *address = NULL;
-       bool port_specified = false;
 
        if(!(name = get_name(mesh))) {
-               logger(DEBUG_ALWAYS, LOG_ERR, "Name for tinc daemon required!");
+               logger(DEBUG_ALWAYS, LOG_ERR, "Name for MeshLink instance required!");
                return false;
        }
 
@@ -282,8 +281,6 @@ bool setup_myself(meshlink_handle_t *mesh) {
 
        if(!get_config_string(lookup_config(mesh->config, "Port"), &mesh->myport))
                mesh->myport = xstrdup("655");
-       else
-               port_specified = true;
 
        mesh->self->connection->options = 0;
        mesh->self->connection->protocol_major = PROT_MAJOR;
@@ -333,7 +330,6 @@ bool setup_myself(meshlink_handle_t *mesh) {
        /* Open sockets */
 
        mesh->listen_sockets = 0;
-       int cfgs = 0;
 
        if(!add_listen_address(mesh, address, NULL))
                return false;
@@ -381,11 +377,13 @@ bool setup_network(meshlink_handle_t *mesh) {
   close all open network connections
 */
 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(mesh, c, false);
+       if(mesh->connections) {
+               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(mesh, c, false);
+               }
        }
 
        if(mesh->outgoings)