diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-10-23 13:57:02 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-10-23 13:57:02 -0700 |
commit | e6a63f5547f928f4908b7436210340c9db752284 (patch) | |
tree | 6df47197a42879fc6b6c7ce6754bd38d376544a8 /node/Topology.cpp | |
parent | 29b966894cb401e6ce396d2c12d94ee90adb4ef7 (diff) | |
download | infinitytier-e6a63f5547f928f4908b7436210340c9db752284.tar.gz infinitytier-e6a63f5547f928f4908b7436210340c9db752284.zip |
Fix bug in setWorld that might have caused a peer entry for myself (which would never be used)
Diffstat (limited to 'node/Topology.cpp')
-rw-r--r-- | node/Topology.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/node/Topology.cpp b/node/Topology.cpp index 88c8856c..adfcd1f9 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -358,16 +358,18 @@ void Topology::_setWorld(const World &newWorld) _rootAddresses.clear(); _rootPeers.clear(); for(std::vector<World::Root>::const_iterator r(_world.roots().begin());r!=_world.roots().end();++r) { - if (r->identity == RR->identity) - _amRoot = true; _rootAddresses.push_back(r->identity.address()); - SharedPtr<Peer> *rp = _peers.get(r->identity.address()); - if (rp) { - _rootPeers.push_back(*rp); - } else if (r->identity.address() != RR->identity.address()) { - SharedPtr<Peer> newrp(new Peer(RR->identity,r->identity)); - _peers.set(r->identity.address(),newrp); - _rootPeers.push_back(newrp); + if (r->identity.address() == RR->identity.address()) { + _amRoot = true; + } else { + SharedPtr<Peer> *rp = _peers.get(r->identity.address()); + if (rp) { + _rootPeers.push_back(*rp); + } else { + SharedPtr<Peer> newrp(new Peer(RR->identity,r->identity)); + _peers.set(r->identity.address(),newrp); + _rootPeers.push_back(newrp); + } } } } |