summaryrefslogtreecommitdiff
path: root/node/Topology.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-02-04 13:17:00 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-02-04 13:17:00 -0800
commit3587aa1ea7573198168422be55511b16470fb33f (patch)
tree645853d1cd6cd9d98218d28455efa981d5f6ccf5 /node/Topology.cpp
parentbeb642faa58bb3c2c283a068e6de942bfad2c314 (diff)
downloadinfinitytier-3587aa1ea7573198168422be55511b16470fb33f.tar.gz
infinitytier-3587aa1ea7573198168422be55511b16470fb33f.zip
Add and send certificates of representation to tell people what our valid upstreams are. These are not used yet but will be needed for future privacy modes, etc. Also some cleanup.
Diffstat (limited to 'node/Topology.cpp')
-rw-r--r--node/Topology.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/node/Topology.cpp b/node/Topology.cpp
index 0cd3db9e..f19d8656 100644
--- a/node/Topology.cpp
+++ b/node/Topology.cpp
@@ -417,6 +417,7 @@ void Topology::_memoizeUpstreams()
// assumes _upstreams_m and _peers_m are locked
_upstreamAddresses.clear();
_amRoot = false;
+
for(std::vector<World::Root>::const_iterator i(_planet.roots().begin());i!=_planet.roots().end();++i) {
if (i->identity == RR->identity) {
_amRoot = true;
@@ -429,6 +430,7 @@ void Topology::_memoizeUpstreams()
}
}
}
+
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) {
@@ -443,6 +445,15 @@ void Topology::_memoizeUpstreams()
}
}
}
+
+ std::sort(_upstreamAddresses.begin(),_upstreamAddresses.end());
+
+ _cor.clear();
+ for(std::vector<Address>::const_iterator a(_upstreamAddresses.begin());a!=_upstreamAddresses.end();++a) {
+ if (!_cor.addRepresentative(*a))
+ break;
+ }
+ _cor.sign(RR->identity,RR->node->now());
}
} // namespace ZeroTier