summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-01-27 16:25:53 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-01-27 16:25:53 -0800
commit77a1dd4737cfaccfd013f85a5feaa786c58a9a35 (patch)
tree27ebf1dea74eed37a0d9ed574cf5695c1625bb39 /node
parent9e7c778cc8ebdfd5d3f773a7d3cb30ad154e7189 (diff)
downloadinfinitytier-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.cpp20
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;
+ }
}
}
}