diff options
-rw-r--r-- | node/Cluster.cpp | 2 | ||||
-rw-r--r-- | node/Peer.cpp | 2 | ||||
-rw-r--r-- | node/Peer.hpp | 4 |
3 files changed, 4 insertions, 4 deletions
diff --git a/node/Cluster.cpp b/node/Cluster.cpp index 933bfb37..2a261e51 100644 --- a/node/Cluster.cpp +++ b/node/Cluster.cpp @@ -361,7 +361,7 @@ void Cluster::handleIncomingStateMessage(const void *msg,unsigned int len) case CLUSTER_MESSAGE_WANT_PEER: { const Address zeroTierAddress(dmsg.field(ptr,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH); ptr += ZT_ADDRESS_LENGTH; SharedPtr<Peer> peer(RR->topology->getPeerNoCache(zeroTierAddress)); - if ( (peer) && (peer->hasClusterOptimalPath(RR->node->now())) ) { + if ( (peer) && (peer->hasLocalClusterOptimalPath(RR->node->now())) ) { Buffer<1024> buf; peer->identity().serialize(buf); Mutex::Lock _l2(_members[fromMemberId].lock); diff --git a/node/Peer.cpp b/node/Peer.cpp index c56dbca9..abbbea72 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -175,7 +175,7 @@ void Peer::received( _paths[slot].lastReceive = now; _paths[slot].path = path; #ifdef ZT_ENABLE_CLUSTER - _paths[p].localClusterSuboptimal = suboptimalPath; + _paths[slot].localClusterSuboptimal = suboptimalPath; if (RR->cluster) RR->cluster->broadcastHavePeer(_id); #endif diff --git a/node/Peer.hpp b/node/Peer.hpp index cd08e2d7..3ffabb05 100644 --- a/node/Peer.hpp +++ b/node/Peer.hpp @@ -289,10 +289,10 @@ public: * @param now Current time * @return True if this peer has at least one active direct path that is not cluster-suboptimal */ - inline bool hasClusterOptimalPath(uint64_t now) const + inline bool hasLocalClusterOptimalPath(uint64_t now) const { for(unsigned int p=0,np=_numPaths;p<np;++p) { - if ( (_paths[p].path->alive(now)) && ((_paths[p].clusterWeights & 1) != 0) ) + if ( (_paths[p].path->alive(now)) && (!_paths[p].localClusterSuboptimal) ) return true; } return false; |