summaryrefslogtreecommitdiff
path: root/node/Peer.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-20 17:36:10 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-20 17:36:10 -0700
commit978b056a0134edd9598a3edb219b31c61405c3b4 (patch)
tree8aaade77b1b3189147c48f768f3d0850030e05c2 /node/Peer.cpp
parent6a7b47e5e19687b2dda19449d4f0758388065077 (diff)
downloadinfinitytier-978b056a0134edd9598a3edb219b31c61405c3b4.tar.gz
infinitytier-978b056a0134edd9598a3edb219b31c61405c3b4.zip
Wire in redirectPeer(), now about ready to test clustering!
Diffstat (limited to 'node/Peer.cpp')
-rw-r--r--node/Peer.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/node/Peer.cpp b/node/Peer.cpp
index 45e2fedd..fa7b3aa4 100644
--- a/node/Peer.cpp
+++ b/node/Peer.cpp
@@ -82,6 +82,7 @@ void Peer::received(
{
const uint64_t now = RR->node->now();
bool needMulticastGroupAnnounce = false;
+ bool pathIsConfirmed = false;
{
Mutex::Lock _l(_lock);
@@ -89,8 +90,6 @@ void Peer::received(
_lastReceive = now;
if (!hops) {
- bool pathIsConfirmed = false;
-
/* Learn new paths from direct (hops == 0) packets */
{
unsigned int np = _numPaths;
@@ -141,11 +140,6 @@ void Peer::received(
}
}
}
-
-#ifdef ZT_ENABLE_CLUSTER
- if ((pathIsConfirmed)&&(RR->cluster))
- RR->cluster->replicateHavePeer(_id);
-#endif
}
if ((now - _lastAnnouncedTo) >= ((ZT_MULTICAST_LIKE_EXPIRE / 2) - 1000)) {
@@ -159,6 +153,14 @@ void Peer::received(
_lastMulticastFrame = now;
}
+#ifdef ZT_ENABLE_CLUSTER
+ if ((pathIsConfirmed)&&(RR->cluster)) {
+ // Either shuttle this peer off somewhere else or report to other members that we have it
+ if (!RR->cluster->redirectPeer(_id.address(),remoteAddr,false))
+ RR->cluster->replicateHavePeer(_id);
+ }
+#endif
+
if (needMulticastGroupAnnounce) {
const std::vector< SharedPtr<Network> > networks(RR->node->allNetworks());
for(std::vector< SharedPtr<Network> >::const_iterator n(networks.begin());n!=networks.end();++n)