diff options
Diffstat (limited to 'node/Topology.hpp')
| -rw-r--r-- | node/Topology.hpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/node/Topology.hpp b/node/Topology.hpp index 37615b49..e21747c8 100644 --- a/node/Topology.hpp +++ b/node/Topology.hpp @@ -184,14 +184,7 @@ public: { Mutex::Lock _l(_upstreams_m); for(std::vector<World::Root>::const_iterator i(_planet.roots().begin());i!=_planet.roots().end();++i) { - std::vector<InetAddress> &ips = eps[i->identity.address()]; - for(std::vector<InetAddress>::const_iterator j(i->stableEndpoints.begin());j!=i->stableEndpoints.end();++j) { - if (std::find(ips.begin(),ips.end(),*j) == ips.end()) - ips.push_back(*j); - } - } - for(std::vector<World>::const_iterator m(_moons.begin());m!=_moons.end();++m) { - for(std::vector<World::Root>::const_iterator i(m->roots().begin());i!=m->roots().end();++i) { + if (i->identity != RR->identity) { std::vector<InetAddress> &ips = eps[i->identity.address()]; for(std::vector<InetAddress>::const_iterator j(i->stableEndpoints.begin());j!=i->stableEndpoints.end();++j) { if (std::find(ips.begin(),ips.end(),*j) == ips.end()) @@ -199,6 +192,17 @@ public: } } } + for(std::vector<World>::const_iterator m(_moons.begin());m!=_moons.end();++m) { + for(std::vector<World::Root>::const_iterator i(m->roots().begin());i!=m->roots().end();++i) { + if (i->identity != RR->identity) { + std::vector<InetAddress> &ips = eps[i->identity.address()]; + for(std::vector<InetAddress>::const_iterator j(i->stableEndpoints.begin());j!=i->stableEndpoints.end();++j) { + if (std::find(ips.begin(),ips.end(),*j) == ips.end()) + ips.push_back(*j); + } + } + } + } for(std::vector< std::pair<uint64_t,Address> >::const_iterator m(_moonSeeds.begin());m!=_moonSeeds.end();++m) eps[m->second]; } |
