summaryrefslogtreecommitdiff
path: root/node/Topology.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Topology.cpp')
-rw-r--r--node/Topology.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/node/Topology.cpp b/node/Topology.cpp
index 3f4043da..dd041007 100644
--- a/node/Topology.cpp
+++ b/node/Topology.cpp
@@ -258,6 +258,24 @@ void Topology::clean(uint64_t now)
}
}
+bool Topology::updateSurface(const SharedPtr<Peer> &remotePeer,const InetAddress &mirroredAddress)
+{
+ Mutex::Lock _l(_lock);
+
+ if (std::find(_supernodeAddresses.begin(),_supernodeAddresses.end(),remotePeer->address()) == _supernodeAddresses.end())
+ return false;
+
+ if (_surface.update(mirroredAddress)) {
+ // Clear non-fixed paths for all peers
+ for(std::map< Address,SharedPtr<Peer> >::const_iterator ap(_activePeers.begin());ap!=_activePeers.end();++ap)
+ ap->second->clearPaths(false);
+
+ return true;
+ }
+
+ return false;
+}
+
bool Topology::authenticateRootTopology(const Dictionary &rt)
{
try {