X-Git-Url: https://git.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet.c;h=d80a7129de593312c9912ed3e917c5e95d97dc6e;hb=2d4203fefa52a41f7987b1ace254da77df6e2dbf;hp=e52363e4a685f8586d6652639e452e9867df6e1c;hpb=74c89c1dc9b14436c79cdf49366d3e5c19862457;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; } }