Fix memory leak while running Dijkstra's algorithm.
[tinc] / src / net_socket.c
index 28b6067..d12810f 100644 (file)
@@ -392,25 +392,7 @@ begin:
 
        configure_tcp(c);
 
-       /* Connect */
-
-       result = connect(c->socket, &c->address.sa, SALEN(c->address.sa));
-
-       if(result == -1) {
-               if(sockinprogress(sockerrno)) {
-                       c->status.connecting = true;
-                       return;
-               }
-
-               closesocket(c->socket);
-
-               ifdebug(CONNECTIONS) logger(LOG_ERR, "%s: %s", c->hostname, sockstrerror(sockerrno));
-
-               goto begin;
-       }
-
-       finish_connecting(c);
-
+       c->status.connecting = true;
        return;
 }
 
@@ -498,6 +480,7 @@ void handle_new_meta_connection(void *data) {
 
                configure_tcp(c);
 
+               mutex_lock(&mutex);
                connection_add(c);
 
                c->allow_request = ID;
@@ -507,6 +490,7 @@ void handle_new_meta_connection(void *data) {
                        logger(LOG_ERR, "create_thread() failed: %s", strerror(errno));
                        abort();
                }
+               mutex_unlock(&mutex);
        }
 }