summaryrefslogtreecommitdiff
path: root/node/Topology.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-23 13:57:02 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-23 13:57:02 -0700
commite6a63f5547f928f4908b7436210340c9db752284 (patch)
tree6df47197a42879fc6b6c7ce6754bd38d376544a8 /node/Topology.cpp
parent29b966894cb401e6ce396d2c12d94ee90adb4ef7 (diff)
downloadinfinitytier-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.cpp20
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);
+ }
}
}
}