mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-05 03:53:44 +02:00
Merge pull request #2086 from zerotier/tl-2082
Don't skip hellos when there are no paths available
This commit is contained in:
commit
0e9e7f2ebc
2 changed files with 34 additions and 21 deletions
47
.github/workflows/validate-1m-linux.sh
vendored
47
.github/workflows/validate-1m-linux.sh
vendored
|
@ -71,26 +71,6 @@ main() {
|
||||||
# Allow forwarding
|
# Allow forwarding
|
||||||
sysctl -w net.ipv4.ip_forward=1
|
sysctl -w net.ipv4.ip_forward=1
|
||||||
|
|
||||||
echo -e "\nPing from host to namespaces"
|
|
||||||
|
|
||||||
ping -c 3 192.168.0.1
|
|
||||||
ping -c 3 192.168.1.1
|
|
||||||
|
|
||||||
echo -e "\nPing from namespace to host"
|
|
||||||
|
|
||||||
$NS1 ping -c 3 192.168.0.1
|
|
||||||
$NS1 ping -c 3 192.168.0.1
|
|
||||||
$NS2 ping -c 3 192.168.0.2
|
|
||||||
$NS2 ping -c 3 192.168.0.2
|
|
||||||
|
|
||||||
echo -e "\nPing from ns1 to ns2"
|
|
||||||
|
|
||||||
$NS1 ping -c 3 192.168.0.1
|
|
||||||
|
|
||||||
echo -e "\nPing from ns2 to ns1"
|
|
||||||
|
|
||||||
$NS2 ping -c 3 192.168.0.1
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Memory Leak Check #
|
# Memory Leak Check #
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -113,7 +93,34 @@ main() {
|
||||||
./zerotier-one node1 -p9996 -U >>node_1.log 2>&1 &
|
./zerotier-one node1 -p9996 -U >>node_1.log 2>&1 &
|
||||||
|
|
||||||
# Second instance, not run in memory profiler
|
# Second instance, not run in memory profiler
|
||||||
|
# Don't set up internet access until _after_ zerotier is running
|
||||||
|
# This has been a source of stuckness in the past.
|
||||||
|
$NS2 ip addr del 192.168.1.2/24 dev veth3
|
||||||
$NS2 sudo ./zerotier-one node2 -U -p9997 >>node_2.log 2>&1 &
|
$NS2 sudo ./zerotier-one node2 -U -p9997 >>node_2.log 2>&1 &
|
||||||
|
sleep 1;
|
||||||
|
$NS2 ip addr add 192.168.1.2/24 dev veth3
|
||||||
|
$NS2 ip route add default via 192.168.1.1
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "\nPing from host to namespaces"
|
||||||
|
|
||||||
|
ping -c 3 192.168.0.1
|
||||||
|
ping -c 3 192.168.1.1
|
||||||
|
|
||||||
|
echo -e "\nPing from namespace to host"
|
||||||
|
|
||||||
|
$NS1 ping -c 3 192.168.0.1
|
||||||
|
$NS1 ping -c 3 192.168.0.1
|
||||||
|
$NS2 ping -c 3 192.168.0.2
|
||||||
|
$NS2 ping -c 3 192.168.0.2
|
||||||
|
|
||||||
|
echo -e "\nPing from ns1 to ns2"
|
||||||
|
|
||||||
|
$NS1 ping -c 3 192.168.0.1
|
||||||
|
|
||||||
|
echo -e "\nPing from ns2 to ns1"
|
||||||
|
|
||||||
|
$NS2 ping -c 3 192.168.0.1
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Online Check #
|
# Online Check #
|
||||||
|
|
|
@ -248,9 +248,15 @@ public:
|
||||||
const std::vector<InetAddress> *const alwaysContactEndpoints = _alwaysContact.get(p->address());
|
const std::vector<InetAddress> *const alwaysContactEndpoints = _alwaysContact.get(p->address());
|
||||||
if (alwaysContactEndpoints) {
|
if (alwaysContactEndpoints) {
|
||||||
|
|
||||||
// Contact upstream peers as infrequently as possible
|
|
||||||
ZT_PeerRole role = RR->topology->role(p->address());
|
ZT_PeerRole role = RR->topology->role(p->address());
|
||||||
|
|
||||||
|
// Contact upstream peers as infrequently as possible
|
||||||
int roleBasedTimerScale = (role == ZT_PEER_ROLE_LEAF) ? 2 : 16;
|
int roleBasedTimerScale = (role == ZT_PEER_ROLE_LEAF) ? 2 : 16;
|
||||||
|
|
||||||
|
// Unless we don't any have paths to the roots, then we shouldn't wait a long time to contact them
|
||||||
|
bool hasPaths = p->paths(RR->node->now()).size() > 0;
|
||||||
|
roleBasedTimerScale = (role != ZT_PEER_ROLE_LEAF && !hasPaths) ? 0 : roleBasedTimerScale;
|
||||||
|
|
||||||
if ((RR->node->now() - p->lastSentFullHello()) <= (ZT_PATH_HEARTBEAT_PERIOD * roleBasedTimerScale)) {
|
if ((RR->node->now() - p->lastSentFullHello()) <= (ZT_PATH_HEARTBEAT_PERIOD * roleBasedTimerScale)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue