summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2016-11-09 16:04:08 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2016-11-09 16:04:08 -0800
commitc61ca1dea2001d8b77bf6b1f44da4246c3088e32 (patch)
tree1b32af1c171009d9fb4a745ff312d315f1ce4059 /node
parenteea712a1ae80994c32f250537ce14e52071312fb (diff)
downloadinfinitytier-c61ca1dea2001d8b77bf6b1f44da4246c3088e32.tar.gz
infinitytier-c61ca1dea2001d8b77bf6b1f44da4246c3088e32.zip
Keep connections up for netconf stuff as well as frames.
Diffstat (limited to 'node')
-rw-r--r--node/Node.cpp2
-rw-r--r--node/Peer.cpp17
-rw-r--r--node/Peer.hpp20
3 files changed, 13 insertions, 26 deletions
diff --git a/node/Node.cpp b/node/Node.cpp
index db9b8ea0..9314478f 100644
--- a/node/Node.cpp
+++ b/node/Node.cpp
@@ -405,8 +405,6 @@ ZT_PeerList *Node::peers() const
for(std::vector< std::pair< Address,SharedPtr<Peer> > >::iterator pi(peers.begin());pi!=peers.end();++pi) {
ZT_Peer *p = &(pl->peers[pl->peerCount++]);
p->address = pi->second->address().toInt();
- p->lastUnicastFrame = pi->second->lastUnicastFrame();
- p->lastMulticastFrame = pi->second->lastMulticastFrame();
if (pi->second->remoteVersionKnown()) {
p->versionMajor = pi->second->remoteVersionMajor();
p->versionMinor = pi->second->remoteVersionMinor();
diff --git a/node/Peer.cpp b/node/Peer.cpp
index 87882dad..94fb5298 100644
--- a/node/Peer.cpp
+++ b/node/Peer.cpp
@@ -42,8 +42,7 @@ static uint32_t _natKeepaliveBuf = 0;
Peer::Peer(const RuntimeEnvironment *renv,const Identity &myIdentity,const Identity &peerIdentity) :
_lastReceive(0),
- _lastUnicastFrame(0),
- _lastMulticastFrame(0),
+ _lastNontrivialReceive(0),
_lastDirectPathPushSent(0),
_lastDirectPathPushReceive(0),
_lastCredentialRequestSent(0),
@@ -128,10 +127,16 @@ void Peer::received(
#endif
_lastReceive = now;
- if ((verb == Packet::VERB_FRAME)||(verb == Packet::VERB_EXT_FRAME))
- _lastUnicastFrame = now;
- else if (verb == Packet::VERB_MULTICAST_FRAME)
- _lastMulticastFrame = now;
+ switch (verb) {
+ case Packet::VERB_FRAME:
+ case Packet::VERB_EXT_FRAME:
+ case Packet::VERB_NETWORK_CONFIG_REQUEST:
+ case Packet::VERB_NETWORK_CONFIG:
+ case Packet::VERB_MULTICAST_FRAME:
+ _lastNontrivialReceive = now;
+ break;
+ default: break;
+ }
if (trustEstablished) {
_lastTrustEstablishedPacketReceived = now;
diff --git a/node/Peer.hpp b/node/Peer.hpp
index d0589ccf..be05aa3a 100644
--- a/node/Peer.hpp
+++ b/node/Peer.hpp
@@ -227,24 +227,9 @@ public:
inline bool isAlive(const uint64_t now) const { return ((now - _lastReceive) < ZT_PEER_ACTIVITY_TIMEOUT); }
/**
- * @return Time of most recent unicast frame received
- */
- inline uint64_t lastUnicastFrame() const { return _lastUnicastFrame; }
-
- /**
- * @return Time of most recent multicast frame received
- */
- inline uint64_t lastMulticastFrame() const { return _lastMulticastFrame; }
-
- /**
- * @return Time of most recent frame of any kind (unicast or multicast)
- */
- inline uint64_t lastFrame() const { return std::max(_lastUnicastFrame,_lastMulticastFrame); }
-
- /**
* @return True if this peer has sent us real network traffic recently
*/
- inline uint64_t isActive(uint64_t now) const { return ((now - lastFrame()) < ZT_PEER_ACTIVITY_TIMEOUT); }
+ inline uint64_t isActive(uint64_t now) const { return ((now - _lastNontrivialReceive) < ZT_PEER_ACTIVITY_TIMEOUT); }
/**
* @return Latency in milliseconds or 0 if unknown
@@ -469,8 +454,7 @@ private:
uint8_t _key[ZT_PEER_SECRET_KEY_LENGTH];
uint8_t _remoteClusterOptimal6[16];
uint64_t _lastReceive; // direct or indirect
- uint64_t _lastUnicastFrame;
- uint64_t _lastMulticastFrame;
+ uint64_t _lastNontrivialReceive; // frames, things like netconf, etc.
uint64_t _lastDirectPathPushSent;
uint64_t _lastDirectPathPushReceive;
uint64_t _lastCredentialRequestSent;