From 384f3d93210a93c2bb5deaa500d1c532e43c8d40 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 25 Oct 2016 16:58:21 -0700 Subject: [PATCH] Fix potential race in NodeList --- libraries/networking/src/NodeList.cpp | 2 +- libraries/networking/src/NodeList.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 7fa8f13652..82bac4cc3d 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -350,7 +350,7 @@ void NodeList::sendDomainServerCheckIn() { // pack our data to send to the domain-server including // the hostname information (so the domain-server can see which place name we came in on) - packetStream << _ownerType << _publicSockAddr << _localSockAddr << _nodeTypesOfInterest.toList(); + packetStream << _ownerType.load() << _publicSockAddr << _localSockAddr << _nodeTypesOfInterest.toList(); packetStream << DependencyManager::get()->getPlaceName(); if (!_domainHandler.isConnected()) { diff --git a/libraries/networking/src/NodeList.h b/libraries/networking/src/NodeList.h index 259ce7c6fe..41a4a51515 100644 --- a/libraries/networking/src/NodeList.h +++ b/libraries/networking/src/NodeList.h @@ -51,8 +51,8 @@ class NodeList : public LimitedNodeList { SINGLETON_DEPENDENCY public: - NodeType_t getOwnerType() const { return _ownerType; } - void setOwnerType(NodeType_t ownerType) { _ownerType = ownerType; } + NodeType_t getOwnerType() const { return _ownerType.load(); } + void setOwnerType(NodeType_t ownerType) { _ownerType.store(ownerType); } Q_INVOKABLE qint64 sendStats(QJsonObject statsObject, HifiSockAddr destination); Q_INVOKABLE qint64 sendStatsToDomainServer(QJsonObject statsObject); @@ -134,7 +134,7 @@ private: bool sockAddrBelongsToDomainOrNode(const HifiSockAddr& sockAddr); - NodeType_t _ownerType; + std::atomic _ownerType; NodeSet _nodeTypesOfInterest; DomainHandler _domainHandler; int _numNoReplyDomainCheckIns;