diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-01-27 16:25:53 -0800 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-01-27 16:25:53 -0800 |
commit | 77a1dd4737cfaccfd013f85a5feaa786c58a9a35 (patch) | |
tree | 27ebf1dea74eed37a0d9ed574cf5695c1625bb39 /node | |
parent | 9e7c778cc8ebdfd5d3f773a7d3cb30ad154e7189 (diff) | |
download | infinitytier-77a1dd4737cfaccfd013f85a5feaa786c58a9a35.tar.gz infinitytier-77a1dd4737cfaccfd013f85a5feaa786c58a9a35.zip |
Dead code removal, fix minor issue in upstream endpoint check.
Diffstat (limited to 'node')
-rw-r--r-- | node/Topology.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/node/Topology.cpp b/node/Topology.cpp index 5632c337..0cd3db9e 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -234,16 +234,24 @@ bool Topology::isProhibitedEndpoint(const Address &ztaddr,const InetAddress &ipa // bit of extra security against spoofing, replaying, etc. if (std::find(_upstreamAddresses.begin(),_upstreamAddresses.end(),ztaddr) != _upstreamAddresses.end()) { for(std::vector<World::Root>::const_iterator r(_planet.roots().begin());r!=_planet.roots().end();++r) { - for(std::vector<InetAddress>::const_iterator e(r->stableEndpoints.begin());e!=r->stableEndpoints.end();++e) { - if (ipaddr.ipsEqual(*e)) - return false; + if (r->identity.address() == ztaddr) { + if (r->stableEndpoints.size() == 0) + return false; // no stable endpoints specified, so allow dynamic paths + for(std::vector<InetAddress>::const_iterator e(r->stableEndpoints.begin());e!=r->stableEndpoints.end();++e) { + if (ipaddr.ipsEqual(*e)) + return false; + } } } for(std::vector<World>::const_iterator m(_moons.begin());m!=_moons.end();++m) { for(std::vector<World::Root>::const_iterator r(m->roots().begin());r!=m->roots().end();++r) { - for(std::vector<InetAddress>::const_iterator e(r->stableEndpoints.begin());e!=r->stableEndpoints.end();++e) { - if (ipaddr.ipsEqual(*e)) - return false; + if (r->identity.address() == ztaddr) { + if (r->stableEndpoints.size() == 0) + return false; // no stable endpoints specified, so allow dynamic paths + for(std::vector<InetAddress>::const_iterator e(r->stableEndpoints.begin());e!=r->stableEndpoints.end();++e) { + if (ipaddr.ipsEqual(*e)) + return false; + } } } } |