X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet.c;h=d80a7129de593312c9912ed3e917c5e95d97dc6e;hb=refs%2Fheads%2F1.1-threads;hp=e52363e4a685f8586d6652639e452e9867df6e1c;hpb=0acbdba62ea6798427366a12aaeebccbf7226b26;p=tinc diff --git a/src/net.c b/src/net.c index e52363e4..d80a7129 100644 --- a/src/net.c +++ b/src/net.c @@ -216,13 +216,12 @@ void handle_meta_connection_data(void *data) { int result; socklen_t len = sizeof result; - if(c->status.connecting) { - c->status.connecting = false; - - getsockopt(c->socket, SOL_SOCKET, SO_ERROR, &result, &len); + while(c->status.connecting) { + result = connect(c->socket, &c->address.sa, SALEN(c->address.sa)); if(!result) { mutex_lock(&mutex); + c->status.connecting = false; finish_connecting(c); mutex_unlock(&mutex); } else { @@ -230,10 +229,10 @@ void handle_meta_connection_data(void *data) { "Error while connecting to %s (%s): %s", c->name, c->hostname, sockstrerror(result)); closesocket(c->socket); + c->status.connecting = false; mutex_lock(&mutex); do_outgoing_connection(c); mutex_unlock(&mutex); - return; } }