summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-27 12:21:57 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-27 12:21:57 -0700
commit0ffbd05c0e14088ddb7eaecba7f19541651e859b (patch)
tree4cddb0516fefda576d37d8667aa601d7729b2a2f
parenta1a0ee4edb0933c9b82abad8715def6a63049658 (diff)
downloadinfinitytier-0ffbd05c0e14088ddb7eaecba7f19541651e859b.tar.gz
infinitytier-0ffbd05c0e14088ddb7eaecba7f19541651e859b.zip
--wtf; prevent roots from TCP fallback
-rw-r--r--node/Node.cpp4
-rw-r--r--service/OneService.cpp3
2 files changed, 4 insertions, 3 deletions
diff --git a/node/Node.cpp b/node/Node.cpp
index 2b298903..87871e20 100644
--- a/node/Node.cpp
+++ b/node/Node.cpp
@@ -321,8 +321,8 @@ ZT_ResultCode Node::processBackgroundTasks(uint64_t now,volatile uint64_t *nextB
RR->topology->eachPeer<_PingPeersThatNeedPing &>(pfunc);
// Update online status, post status change as event
- bool oldOnline = _online;
- _online = ((now - pfunc.lastReceiveFromUpstream) < ZT_PEER_ACTIVITY_TIMEOUT);
+ const bool oldOnline = _online;
+ _online = (((now - pfunc.lastReceiveFromUpstream) < ZT_PEER_ACTIVITY_TIMEOUT)||(RR->topology->amRoot()));
if (oldOnline != _online)
postEvent(_online ? ZT_EVENT_ONLINE : ZT_EVENT_OFFLINE);
} catch ( ... ) {
diff --git a/service/OneService.cpp b/service/OneService.cpp
index 729812ed..7a473b67 100644
--- a/service/OneService.cpp
+++ b/service/OneService.cpp
@@ -867,6 +867,7 @@ public:
{
#ifdef ZT_ENABLE_CLUSTER
if (sock == _clusterMessageSocket) {
+ _lastDirectReceiveFromGlobal = OSUtils::now();
_node->clusterHandleIncomingMessage(data,len);
return;
}
@@ -1030,7 +1031,7 @@ public:
if (from) {
ZT_ResultCode rc = _node->processWirePacket(
OSUtils::now(),
- 0,
+ &ZT_SOCKADDR_NULL,
reinterpret_cast<struct sockaddr_storage *>(&from),
data,
plen,