From eb9d100fc8777e1eadb872c2fb63e6af9f1e0285 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 17 Jan 2018 13:29:20 -0800 Subject: [PATCH] reset count on conn refusal, soft reset DH in Interface on limit reached --- interface/src/Application.cpp | 4 ++-- libraries/networking/src/DomainHandler.cpp | 3 +++ libraries/networking/src/NodeList.cpp | 12 ++++++------ libraries/networking/src/NodeList.h | 4 +++- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e12f16d3cd..ae6b985821 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1046,8 +1046,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(nodeList.data(), &NodeList::packetVersionMismatch, this, &Application::notifyPacketVersionMismatch); // you might think we could just do this in NodeList but we only want this connection for Interface - connect(&nodeList->getDomainHandler(), &DomainHandler::limitOfSilentDomainCheckInsReached, - nodeList.data(), &NodeList::reset); + connect(&nodeList->getDomainHandler(), SIGNAL(limitOfSilentDomainCheckInsReached()), + nodeList.data(), SLOT(reset())); auto dialogsManager = DependencyManager::get(); connect(accountManager.data(), &AccountManager::authRequired, dialogsManager.data(), &DialogsManager::showLoginDialog); diff --git a/libraries/networking/src/DomainHandler.cpp b/libraries/networking/src/DomainHandler.cpp index bc56389810..411f8f5be2 100644 --- a/libraries/networking/src/DomainHandler.cpp +++ b/libraries/networking/src/DomainHandler.cpp @@ -383,6 +383,9 @@ void DomainHandler::processDomainServerConnectionDeniedPacket(QSharedPointer message) { sendPacket(std::move(replyPacket), message->getSenderSockAddr()); } -void NodeList::reset() { +void NodeList::reset(bool skipDomainHandlerReset) { if (thread() != QThread::currentThread()) { - QMetaObject::invokeMethod(this, "reset"); + QMetaObject::invokeMethod(this, "reset", Q_ARG(bool, skipDomainHandlerReset)); return; } @@ -252,7 +252,7 @@ void NodeList::reset() { _avatarGainMap.clear(); _avatarGainMapLock.unlock(); - if (sender() != &_domainHandler) { + if (!skipDomainHandlerReset) { // clear the domain connection information, unless they're the ones that asked us to reset _domainHandler.softReset(); } diff --git a/libraries/networking/src/NodeList.h b/libraries/networking/src/NodeList.h index 081c10b97d..2dd9d3c869 100644 --- a/libraries/networking/src/NodeList.h +++ b/libraries/networking/src/NodeList.h @@ -93,7 +93,9 @@ public: void removeFromIgnoreMuteSets(const QUuid& nodeID); public slots: - void reset(); + void reset(bool skipDomainHandlerReset = false); + void resetFromDomainHandler() { reset(true); } + void sendDomainServerCheckIn(); void handleDSPathQuery(const QString& newPath);