mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-01-31 08:25:38 +00:00
Attempt to reactivate dead paths.
This commit is contained in:
parent
4f8253dcdb
commit
412979ba8f
@ -162,7 +162,7 @@ public:
|
||||
*
|
||||
* @param now Current time
|
||||
* @param inetAddressFamily Keep this address family alive, or 0 to simply pick current best ignoring family
|
||||
* @return True if at least one direct path seems alive
|
||||
* @return True if we have at least one direct path
|
||||
*/
|
||||
bool doPingAndKeepalive(uint64_t now,int inetAddressFamily);
|
||||
|
||||
|
@ -754,7 +754,15 @@ bool Switch::_trySend(const Packet &packet,bool encrypt)
|
||||
const uint64_t now = RR->node->now();
|
||||
|
||||
SharedPtr<Path> viaPath(peer->getBestPath(now));
|
||||
if ( (!viaPath) || ((!viaPath->alive(now))&&(!RR->topology->isRoot(peer->identity()))) ) {
|
||||
if ( (viaPath) && (!viaPath->alive(now)) && (!RR->topology->isRoot(peer->identity())) ) {
|
||||
if ((now - viaPath->lastOut()) > 5000) {
|
||||
Packet outp(peer->address(),RR->identity.address(),Packet::VERB_ECHO);
|
||||
outp.armor(peer->key(),true);
|
||||
viaPath->send(RR,outp.data(),outp.size(),now);
|
||||
}
|
||||
viaPath.zero();
|
||||
}
|
||||
if (!viaPath) {
|
||||
SharedPtr<Peer> relay(RR->topology->getBestRoot());
|
||||
if ( (!relay) || (!(viaPath = relay->getBestPath(now))) )
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user