Import Upstream version 1.0.16

This commit is contained in:
Guus Sliepen 2019-08-26 13:44:41 +02:00
parent d09cb3d82a
commit bb1aebd963
11 changed files with 70 additions and 50 deletions

View file

@ -50,6 +50,7 @@ bool graph_dump = false;
time_t now = 0;
int contradicting_add_edge = 0;
int contradicting_del_edge = 0;
static int sleeptime = 10;
/* Purge edges and subnets of unreachable nodes. Use carefully. */
@ -464,18 +465,25 @@ int main_loop(void) {
keyexpires = now + keylifetime;
}
if(contradicting_del_edge > 10 && contradicting_add_edge > 10) {
logger(LOG_WARNING, "Possible node with same Name as us!");
/* Detect ADD_EDGE/DEL_EDGE storms that are caused when
* two tinc daemons with the same name are on the VPN.
* If so, sleep a while. If this happens multiple times
* in a row, sleep longer. */
if(rand() % 3 == 0) {
logger(LOG_ERR, "Shutting down, check configuration of all nodes for duplicate Names!");
running = false;
break;
}
contradicting_add_edge = 0;
contradicting_del_edge = 0;
if(contradicting_del_edge > 100 && contradicting_add_edge > 100) {
logger(LOG_WARNING, "Possible node with same Name as us! Sleeping %d seconds.", sleeptime);
usleep(sleeptime * 1000000LL);
sleeptime *= 2;
if(sleeptime < 0)
sleeptime = 3600;
} else {
sleeptime /= 2;
if(sleeptime < 10)
sleeptime = 10;
}
contradicting_add_edge = 0;
contradicting_del_edge = 0;
}
if(sigalrm) {

View file

@ -129,7 +129,7 @@ bool send_tcppacket(connection_t *c, const vpn_packet_t *packet) {
if(!send_request(c, "%d %hd", PACKET, packet->len))
return false;
return send_meta(c, (char *)packet->data, packet->len);
return send_meta(c, (char *)packet->data, packet->len) && flush_meta(c);
}
bool tcppacket_h(connection_t *c) {