Import Upstream version 1.0.16
This commit is contained in:
parent
d09cb3d82a
commit
bb1aebd963
11 changed files with 70 additions and 50 deletions
28
src/net.c
28
src/net.c
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue