From 45d796e8f3dbf91dc94c6abc82a577038b62b950 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 4 Apr 2014 15:56:02 -0700 Subject: [PATCH] allow re-handshake in NodeList after domain refresh --- domain-server/src/DomainServer.cpp | 1 - libraries/shared/src/DomainHandler.h | 1 + libraries/shared/src/DummyDTLSSession.h | 2 +- libraries/shared/src/LimitedNodeList.cpp | 2 +- libraries/shared/src/NodeList.cpp | 3 +++ 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 5d99a755c1..60c5cf1d0e 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -652,7 +652,6 @@ void DomainServer::readAvailableDTLSDatagrams() { DTLSServerSession* existingSession = _dtlsSessions.value(senderHifiSockAddr); if (existingSession) { - qDebug() << "There is an existing session for" << senderHifiSockAddr; if (!existingSession->completedHandshake()) { // check if we have completed handshake with this user int handshakeReturn = gnutls_handshake(*existingSession->getGnuTLSSession()); diff --git a/libraries/shared/src/DomainHandler.h b/libraries/shared/src/DomainHandler.h index b8351653f6..c34321cf87 100644 --- a/libraries/shared/src/DomainHandler.h +++ b/libraries/shared/src/DomainHandler.h @@ -61,6 +61,7 @@ signals: void hostnameChanged(const QString& hostname); void connectedToDomain(const QString& hostname); void completedDTLSHandshake(); + void DTLSConnectionLost(); private: void reset(); diff --git a/libraries/shared/src/DummyDTLSSession.h b/libraries/shared/src/DummyDTLSSession.h index 6d4a54b4ca..394bb82ae5 100644 --- a/libraries/shared/src/DummyDTLSSession.h +++ b/libraries/shared/src/DummyDTLSSession.h @@ -15,7 +15,7 @@ #include "HifiSockAddr.h" -#define DTLS_VERBOSE_DEBUG 1 +#define DTLS_VERBOSE_DEBUG 0 class DummyDTLSSession : public QObject { Q_OBJECT diff --git a/libraries/shared/src/LimitedNodeList.cpp b/libraries/shared/src/LimitedNodeList.cpp index f6e6d282d9..e9fdaa493c 100644 --- a/libraries/shared/src/LimitedNodeList.cpp +++ b/libraries/shared/src/LimitedNodeList.cpp @@ -426,7 +426,7 @@ void LimitedNodeList::removeSilentNodes() { node->getMutex().lock(); - if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > (NODE_SILENCE_THRESHOLD_MSECS * 1)) { + if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > (NODE_SILENCE_THRESHOLD_MSECS * 1000)) { // call our private method to kill this node (removes it and emits the right signal) nodeItem = killNodeAtHashIterator(nodeItem); } else { diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 92eb186c96..50fd3d1cbc 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -196,6 +196,9 @@ void NodeList::reset() { // clear the domain connection information _domainHandler.clearConnectionInfo(); + + // also disconnect from the DTLS socket readyRead() so it can handle handshaking + disconnect(_dtlsSocket, 0, this, 0); } void NodeList::addNodeTypeToInterestSet(NodeType_t nodeTypeToAdd) {