summaryrefslogtreecommitdiff
path: root/node/Cluster.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-02-01 12:51:52 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-02-01 12:51:52 -0800
commite778d45128295ddf9bbb00f4a46f103de4bc4c11 (patch)
tree5403c75c376153f4120e8eb22972cdff4eb54c07 /node/Cluster.cpp
parent5e11cf637816121f79c3ed00370843e93b62b1c6 (diff)
downloadinfinitytier-e778d45128295ddf9bbb00f4a46f103de4bc4c11.tar.gz
infinitytier-e778d45128295ddf9bbb00f4a46f103de4bc4c11.zip
Still want to send WANT_PEER under two failure modes.
Diffstat (limited to 'node/Cluster.cpp')
-rw-r--r--node/Cluster.cpp48
1 files changed, 23 insertions, 25 deletions
diff --git a/node/Cluster.cpp b/node/Cluster.cpp
index a24cf99d..ef09e842 100644
--- a/node/Cluster.cpp
+++ b/node/Cluster.cpp
@@ -536,37 +536,35 @@ int Cluster::prepSendViaCluster(const Address &toPeerAddress,void *peerSecret)
}
}
- if (mostRecentMemberId >= 0) {
- const uint64_t ageOfMostRecentHavePeerAnnouncement = now - mostRecentTs;
- if (ageOfMostRecentHavePeerAnnouncement >= (ZT_PEER_ACTIVITY_TIMEOUT / 3)) {
- if (ageOfMostRecentHavePeerAnnouncement >= ZT_PEER_ACTIVITY_TIMEOUT)
- return -1;
+ const uint64_t ageOfMostRecentHavePeerAnnouncement = now - mostRecentTs;
+ if (ageOfMostRecentHavePeerAnnouncement >= (ZT_PEER_ACTIVITY_TIMEOUT / 3)) {
+ if (ageOfMostRecentHavePeerAnnouncement >= ZT_PEER_ACTIVITY_TIMEOUT)
+ mostRecentMemberId = -1;
- bool sendWantPeer = true;
- {
- Mutex::Lock _l(_remotePeers_m);
- _RemotePeer &rp = _remotePeers[std::pair<Address,unsigned int>(toPeerAddress,(unsigned int)_id)];
- if ((now - rp.lastSentWantPeer) >= ZT_CLUSTER_WANT_PEER_EVERY) {
- rp.lastSentWantPeer = now;
- } else {
- sendWantPeer = false; // don't flood WANT_PEER
- }
+ bool sendWantPeer = true;
+ {
+ Mutex::Lock _l(_remotePeers_m);
+ _RemotePeer &rp = _remotePeers[std::pair<Address,unsigned int>(toPeerAddress,(unsigned int)_id)];
+ if ((now - rp.lastSentWantPeer) >= ZT_CLUSTER_WANT_PEER_EVERY) {
+ rp.lastSentWantPeer = now;
+ } else {
+ sendWantPeer = false; // don't flood WANT_PEER
}
- if (sendWantPeer) {
- char tmp[ZT_ADDRESS_LENGTH];
- toPeerAddress.copyTo(tmp,ZT_ADDRESS_LENGTH);
- {
- Mutex::Lock _l(_memberIds_m);
- for(std::vector<uint16_t>::const_iterator mid(_memberIds.begin());mid!=_memberIds.end();++mid) {
- Mutex::Lock _l2(_members[*mid].lock);
- _send(*mid,CLUSTER_MESSAGE_WANT_PEER,tmp,ZT_ADDRESS_LENGTH);
- }
+ }
+ if (sendWantPeer) {
+ char tmp[ZT_ADDRESS_LENGTH];
+ toPeerAddress.copyTo(tmp,ZT_ADDRESS_LENGTH);
+ {
+ Mutex::Lock _l(_memberIds_m);
+ for(std::vector<uint16_t>::const_iterator mid(_memberIds.begin());mid!=_memberIds.end();++mid) {
+ Mutex::Lock _l2(_members[*mid].lock);
+ _send(*mid,CLUSTER_MESSAGE_WANT_PEER,tmp,ZT_ADDRESS_LENGTH);
}
}
}
+ }
- return mostRecentMemberId;
- } else return -1;
+ return mostRecentMemberId;
}
bool Cluster::sendViaCluster(int mostRecentMemberId,const Address &toPeerAddress,const void *data,unsigned int len)