summaryrefslogtreecommitdiff
path: root/node/Peer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Peer.cpp')
-rw-r--r--node/Peer.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/node/Peer.cpp b/node/Peer.cpp
index d3394da6..52727c78 100644
--- a/node/Peer.cpp
+++ b/node/Peer.cpp
@@ -156,8 +156,15 @@ void Peer::received(
}
}
- if (!pathIsConfirmed) {
- if ((verb == Packet::VERB_OK)||(RR->topology->amRoot())) {
+ if (pathIsConfirmed) {
+
+#ifdef ZT_ENABLE_CLUSTER
+ if ((RR->cluster)&&(verb == Packet::VERB_HELLO))
+ RR->cluster->replicateHavePeer(_id);
+#endif
+
+ } else {
+ if (verb == Packet::VERB_OK) {
Path *slot = (Path *)0;
if (np < ZT_MAX_PEER_NETWORK_PATHS) {
@@ -179,6 +186,11 @@ void Peer::received(
_sortPaths(now);
}
+#ifdef ZT_ENABLE_CLUSTER
+ if (RR->cluster)
+ RR->cluster->replicateHavePeer(_id);
+#endif
+
} else {
/* If this path is not known, send a HELLO. We don't learn
@@ -196,11 +208,6 @@ void Peer::received(
}
} // end _lock
-#ifdef ZT_ENABLE_CLUSTER
- if ((RR->cluster)&&(pathIsConfirmed))
- 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)