merged with guus/1.1
This commit is contained in:
commit
f922b1c1e1
2 changed files with 35 additions and 19 deletions
45
src/net.c
45
src/net.c
|
@ -148,7 +148,7 @@ static void timeout_handler(void *data) {
|
|||
bool close_all_connections = false;
|
||||
|
||||
/*
|
||||
timeout_hanlder will start after 30 seconds from start of tincd
|
||||
timeout_handler will start after 30 seconds from start of tincd
|
||||
hold information about the elapsed time since last time the handler
|
||||
has been run
|
||||
*/
|
||||
|
@ -176,6 +176,7 @@ static void timeout_handler(void *data) {
|
|||
last_periodic_run_time = now;
|
||||
|
||||
for list_each(connection_t, c, connection_list) {
|
||||
// control connections (eg. tinc ctl) do not have any timeout
|
||||
if(c->status.control)
|
||||
continue;
|
||||
|
||||
|
@ -185,26 +186,34 @@ static void timeout_handler(void *data) {
|
|||
continue;
|
||||
}
|
||||
|
||||
if(c->last_ping_time.tv_sec + pingtimeout <= now.tv_sec) {
|
||||
if(c->edge) {
|
||||
try_tx(c->node, false);
|
||||
if(c->status.pinged) {
|
||||
logger(DEBUG_CONNECTIONS, LOG_INFO, "%s (%s) didn't respond to PING in %ld seconds", c->name, c->hostname, (long)now.tv_sec - c->last_ping_time.tv_sec);
|
||||
} else if(c->last_ping_time.tv_sec + pinginterval <= now.tv_sec) {
|
||||
send_ping(c);
|
||||
continue;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
if(c->status.connecting)
|
||||
logger(DEBUG_CONNECTIONS, LOG_WARNING, "Timeout while connecting to %s (%s)", c->name, c->hostname);
|
||||
else
|
||||
logger(DEBUG_CONNECTIONS, LOG_WARNING, "Timeout from %s (%s) during authentication", c->name, c->hostname);
|
||||
}
|
||||
// Bail out early if we haven't reached the ping timeout for this node yet
|
||||
if(c->last_ping_time + pingtimeout > now.tv_sec)
|
||||
continue;
|
||||
|
||||
// timeout during connection establishing
|
||||
if(!c->edge) {
|
||||
if(c->status.connecting)
|
||||
logger(DEBUG_CONNECTIONS, LOG_WARNING, "Timeout while connecting to %s (%s)", c->name, c->hostname);
|
||||
else
|
||||
logger(DEBUG_CONNECTIONS, LOG_WARNING, "Timeout from %s (%s) during authentication", c->name, c->hostname);
|
||||
|
||||
terminate_connection(c, c->edge);
|
||||
continue;
|
||||
}
|
||||
|
||||
// helps in UDP holepunching
|
||||
try_tx(c->node, false);
|
||||
|
||||
// timeout during ping
|
||||
if(c->status.pinged) {
|
||||
logger(DEBUG_CONNECTIONS, LOG_INFO, "%s (%s) didn't respond to PING in %ld seconds", c->name, c->hostname, (long)now.tv_sec - c->last_ping_time);
|
||||
terminate_connection(c, c->edge);
|
||||
continue;
|
||||
}
|
||||
|
||||
// check whether we need to send a new ping
|
||||
if(c->last_ping_time + pinginterval <= now.tv_sec)
|
||||
send_ping(c);
|
||||
}
|
||||
|
||||
timeout_set(data, &(struct timeval){1, rand() % 100000});
|
||||
|
|
|
@ -717,6 +717,13 @@ bool connect_tincd(bool verbose) {
|
|||
}
|
||||
|
||||
fclose(f);
|
||||
if ((pid == 0) || (kill(pid, 0) && (errno == ESRCH))) {
|
||||
fprintf(stderr, "Could not find tincd running at pid %d\n", pid);
|
||||
/* clean up the stale socket and pid file */
|
||||
unlink(pidfilename);
|
||||
unlink(unixsocketname);
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifndef HAVE_MINGW
|
||||
struct sockaddr_un sa;
|
||||
|
@ -1390,7 +1397,7 @@ static int cmd_pid(int argc, char *argv[]) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
if(!connect_tincd(true) && !pid)
|
||||
if(!connect_tincd(true) || !pid)
|
||||
return 1;
|
||||
|
||||
printf("%d\n", pid);
|
||||
|
|
Loading…
Reference in a new issue