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);
}
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",
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;
}
configure_tcp(c);
+ mutex_lock(&mutex);
connection_add(c);
c->allow_request = ID;
logger(LOG_ERR, "create_thread() failed: %s", strerror(errno));
abort();
}
+ mutex_unlock(&mutex);
}
}