Browse Source

Fix for GitHub issue #260 -- fix for (non-exploitable) crash in network preferred relay code

pull/1/head
Adam Ierymenko 10 years ago
parent
commit
ceaef19fb7
  1. 1
      node/Peer.hpp
  2. 10
      node/Switch.cpp

1
node/Peer.hpp

@ -263,7 +263,6 @@ public:
return (l * (((unsigned int)tsr / (ZT_PEER_DIRECT_PING_DELAY + 1000)) + 1));
}
/**
* Update latency with a new direct measurment
*

10
node/Switch.cpp

@ -820,10 +820,12 @@ bool Switch::_trySend(const Packet &packet,bool encrypt,uint64_t nwid)
for(std::vector< std::pair<Address,InetAddress> >::const_iterator r(nconf->relays().begin());r!=nconf->relays().end();++r) {
if (r->first != peer->address()) {
SharedPtr<Peer> rp(RR->topology->getPeer(r->first));
const unsigned int q = rp->relayQuality(now);
if ((rp)&&(q < bestq)) { // SUBTILE: < == don't use these if they are nil quality (unsigned int max), instead use a root
bestq = q;
rp.swap(relay);
if (rp) {
const unsigned int q = rp->relayQuality(now);
if (q < bestq) { // SUBTILE: < == don't use these if they are nil quality (unsigned int max), instead use a root
bestq = q;
rp.swap(relay);
}
}
}
}

Loading…
Cancel
Save