Browse Source

Small fix for duplicates in world definitions.

Adam Ierymenko 8 years ago
parent
commit
594cb1fad8
1 changed files with 2 additions and 2 deletions
  1. 2 2
      node/Topology.cpp

+ 2 - 2
node/Topology.cpp

@@ -421,7 +421,7 @@ void Topology::_memoizeUpstreams()
 	for(std::vector<World::Root>::const_iterator i(_planet.roots().begin());i!=_planet.roots().end();++i) {
 	for(std::vector<World::Root>::const_iterator i(_planet.roots().begin());i!=_planet.roots().end();++i) {
 		if (i->identity == RR->identity) {
 		if (i->identity == RR->identity) {
 			_amRoot = true;
 			_amRoot = true;
-		} else {
+		} else if (std::find(_upstreamAddresses.begin(),_upstreamAddresses.end(),i->identity.address()) == _upstreamAddresses.end()) {
 			_upstreamAddresses.push_back(i->identity.address());
 			_upstreamAddresses.push_back(i->identity.address());
 			SharedPtr<Peer> &hp = _peers[i->identity.address()];
 			SharedPtr<Peer> &hp = _peers[i->identity.address()];
 			if (!hp) {
 			if (!hp) {
@@ -435,7 +435,7 @@ void Topology::_memoizeUpstreams()
 		for(std::vector<World::Root>::const_iterator i(m->roots().begin());i!=m->roots().end();++i) {
 		for(std::vector<World::Root>::const_iterator i(m->roots().begin());i!=m->roots().end();++i) {
 			if (i->identity == RR->identity) {
 			if (i->identity == RR->identity) {
 				_amRoot = true;
 				_amRoot = true;
-			} else {
+			} else if (std::find(_upstreamAddresses.begin(),_upstreamAddresses.end(),i->identity.address()) == _upstreamAddresses.end()) {
 				_upstreamAddresses.push_back(i->identity.address());
 				_upstreamAddresses.push_back(i->identity.address());
 				SharedPtr<Peer> &hp = _peers[i->identity.address()];
 				SharedPtr<Peer> &hp = _peers[i->identity.address()];
 				if (!hp) {
 				if (!hp) {