X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet_socket.c;h=3c79ceeabacd401210c4ba3a21c004cb251c3874;hb=708825e4b229a4a1e182e682e2d1021fa2765396;hp=8a733896780ea7c589f53125d81482c888903c61;hpb=f4851be7f5dade24a5f43d366188c033c0f8b426;p=tinc diff --git a/src/net_socket.c b/src/net_socket.c index 8a733896..3c79ceea 100644 --- a/src/net_socket.c +++ b/src/net_socket.c @@ -285,7 +285,7 @@ int setup_vpn_in_socket(const sockaddr_t *sa) { return nfd; } /* int setup_vpn_in_socket */ -static void retry_outgoing_handler(int fd, short events, void *data) { +static void retry_outgoing_handler(void *data) { setup_outgoing_connection(data); } @@ -295,8 +295,9 @@ void retry_outgoing(outgoing_t *outgoing) { if(outgoing->timeout > maxtimeout) outgoing->timeout = maxtimeout; - timeout_set(&outgoing->ev, retry_outgoing_handler, outgoing); - event_add(&outgoing->ev, &(struct timeval){outgoing->timeout, 0}); + outgoing->ev.handler = retry_outgoing_handler; + outgoing->ev.time = time(NULL) + outgoing->timeout; + event_add(&outgoing->ev); ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Trying to re-establish outgoing connection in %d seconds", @@ -497,6 +498,7 @@ void handle_new_meta_connection(void *data) { configure_tcp(c); + mutex_lock(&mutex); connection_add(c); c->allow_request = ID; @@ -506,6 +508,7 @@ void handle_new_meta_connection(void *data) { logger(LOG_ERR, "create_thread() failed: %s", strerror(errno)); abort(); } + mutex_unlock(&mutex); } }