Added comments and unfold deep "if"-construct in timeout_handler
This commit is contained in:
parent
5baecfd11b
commit
9d0e86683c
1 changed files with 27 additions and 18 deletions
45
src/net.c
45
src/net.c
|
@ -149,7 +149,7 @@ static void timeout_handler(void *data) {
|
||||||
bool close_all_connections = false;
|
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
|
hold information about the elapsed time since last time the handler
|
||||||
has been run
|
has been run
|
||||||
*/
|
*/
|
||||||
|
@ -177,6 +177,7 @@ static void timeout_handler(void *data) {
|
||||||
last_periodic_run_time = now;
|
last_periodic_run_time = now;
|
||||||
|
|
||||||
for list_each(connection_t, c, connection_list) {
|
for list_each(connection_t, c, connection_list) {
|
||||||
|
// control connections (eg. tinc ctl) do not have any timeout
|
||||||
if(c->status.control)
|
if(c->status.control)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -186,26 +187,34 @@ static void timeout_handler(void *data) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(c->last_ping_time + pingtimeout <= now.tv_sec) {
|
// Bail out early if we haven't reached the ping timeout for this node yet
|
||||||
if(c->edge) {
|
if(c->last_ping_time + pingtimeout > now.tv_sec)
|
||||||
try_tx(c->node, false);
|
continue;
|
||||||
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));
|
// timeout during connection establishing
|
||||||
} else if(c->last_ping_time + pinginterval <= now.tv_sec) {
|
if(!c->edge) {
|
||||||
send_ping(c);
|
if(c->status.connecting)
|
||||||
continue;
|
logger(DEBUG_CONNECTIONS, LOG_WARNING, "Timeout while connecting to %s (%s)", c->name, c->hostname);
|
||||||
} else {
|
else
|
||||||
continue;
|
logger(DEBUG_CONNECTIONS, LOG_WARNING, "Timeout from %s (%s) during authentication", c->name, c->hostname);
|
||||||
}
|
|
||||||
} 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);
|
|
||||||
}
|
|
||||||
terminate_connection(c, c->edge);
|
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});
|
timeout_set(data, &(struct timeval){1, rand() % 100000});
|
||||||
|
|
Loading…
Reference in a new issue