Fix infinite loop in Cluster, clean up some stuff elsewhere, and back out rate limiting in PUSH_DIRECT_PATHS for now (but we will do something else to mitigate amplification attacks)
This commit is contained in:
parent
54a99d8e32
commit
a1a0ee4edb
7 changed files with 16 additions and 100 deletions
|
@ -254,68 +254,8 @@ SharedPtr<Peer> Topology::getBestRoot(const Address *avoid,unsigned int avoidCou
|
|||
return *bestOverall;
|
||||
}
|
||||
|
||||
/*
|
||||
unsigned int l,bestLatency = 65536;
|
||||
uint64_t lds,ldr;
|
||||
|
||||
// First look for a best root by comparing latencies, but exclude
|
||||
// root servers that have not responded to direct messages in order to
|
||||
// try to exclude any that are dead or unreachable.
|
||||
for(std::vector< SharedPtr<Peer> >::const_iterator sn(_rootPeers.begin());sn!=_rootPeers.end();) {
|
||||
// Skip explicitly avoided relays
|
||||
for(unsigned int i=0;i<avoidCount;++i) {
|
||||
if (avoid[i] == (*sn)->address())
|
||||
goto keep_searching_for_roots;
|
||||
}
|
||||
|
||||
// Skip possibly comatose or unreachable relays
|
||||
lds = (*sn)->lastDirectSend();
|
||||
ldr = (*sn)->lastDirectReceive();
|
||||
if ((lds)&&(lds > ldr)&&((lds - ldr) > ZT_PEER_RELAY_CONVERSATION_LATENCY_THRESHOLD))
|
||||
goto keep_searching_for_roots;
|
||||
|
||||
if ((*sn)->hasActiveDirectPath(now)) {
|
||||
l = (*sn)->latency();
|
||||
if (bestRoot) {
|
||||
if ((l)&&(l < bestLatency)) {
|
||||
bestLatency = l;
|
||||
bestRoot = *sn;
|
||||
}
|
||||
} else {
|
||||
if (l)
|
||||
bestLatency = l;
|
||||
bestRoot = *sn;
|
||||
}
|
||||
}
|
||||
|
||||
keep_searching_for_roots:
|
||||
++sn;
|
||||
}
|
||||
|
||||
if (bestRoot) {
|
||||
bestRoot->use(now);
|
||||
return bestRoot;
|
||||
} else if (strictAvoid)
|
||||
return SharedPtr<Peer>();
|
||||
|
||||
// If we have nothing from above, just pick one without avoidance criteria.
|
||||
for(std::vector< SharedPtr<Peer> >::const_iterator sn=_rootPeers.begin();sn!=_rootPeers.end();++sn) {
|
||||
if ((*sn)->hasActiveDirectPath(now)) {
|
||||
unsigned int l = (*sn)->latency();
|
||||
if (bestRoot) {
|
||||
if ((l)&&(l < bestLatency)) {
|
||||
bestLatency = l;
|
||||
bestRoot = *sn;
|
||||
}
|
||||
} else {
|
||||
if (l)
|
||||
bestLatency = l;
|
||||
bestRoot = *sn;
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
return SharedPtr<Peer>();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue