From af293ec6ddced85a1fa378092fd76f441c55fa22 Mon Sep 17 00:00:00 2001 From: bwent Date: Fri, 31 Jul 2015 09:33:46 -0700 Subject: [PATCH] Fix DomainServerConnectionTOken packet writing/resetting --- domain-server/src/DomainServer.cpp | 19 ++++++++++--------- libraries/networking/src/NodeList.cpp | 2 +- libraries/networking/src/NodeList.h | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index d9bd18580c..b9f7a293b3 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -630,7 +630,9 @@ void DomainServer::processConnectRequestPacket(QSharedPointer packet) QList nodeInterestList; QString username; QByteArray usernameSignature; - + + auto limitedNodeList = DependencyManager::get(); + packetStream >> nodeInterestList; if (packet->bytesLeftToRead() > 0) { @@ -638,24 +640,23 @@ void DomainServer::processConnectRequestPacket(QSharedPointer packet) packetStream >> username >> usernameSignature; } else { - QUuid& connectionToken = _connectionTokenHash[username]; + QUuid connectionToken = _connectionTokenHash[username]; if(connectionToken.isNull()) { // set up the connection token packet static auto connectionTokenPacket = NLPacket::create(PacketType::DomainServerConnectionToken, NUM_BYTES_RFC4122_UUID); - connectionToken->write(connectionToken.toRfc4122()); - nodeList->sendUnreliablePacket(connectionTokenPacket, packet->getSenderSockAddr()); - + connectionTokenPacket.reset(); + connectionTokenPacket->write(connectionToken.toRfc4122()); + nodeList->sendUnreliablePacket(connectionToken, packet->getSenderSockAddr()); return; } else { // reset existing packet - connectionToken->reset(); + + //connectionTokenPacket.reset(); } } - auto limitedNodeList = DependencyManager::get(); - QString reason; if (!isAssignment && !shouldAllowConnectionFromNode(username, usernameSignature, senderSockAddr, reason)) { // this is an agent and we've decided we won't let them connect - send them a packet to deny connection @@ -813,7 +814,7 @@ bool DomainServer::verifyUserSignature(const QString& username, QByteArray lowercaseUsername = username.toLower().toUtf8(); QUuid connectionToken = _connectionTokenHash[username]; - QByteArray usernameWithToken = lowercaseUsername.append(connectionToken); + QByteArray usernameWithToken = lowercaseUsername.append(connectionToken.toRfc4122()); if (decryptResult != -1) { if (usernameWithToken == decryptedArray) { diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 6d62a7bbdc..1739285cba 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -457,7 +457,7 @@ void NodeList::pingPunchForDomainServer() { } -void NodeList::processDomainServerConnectionToken(QSharedPointer packet) { +void NodeList::processDomainServerConnectionTokenPacket(QSharedPointer packet) { if (_domainHandler.getSockAddr().isNull()) { // refuse to process this packet if we aren't currently connected to the DS return; diff --git a/libraries/networking/src/NodeList.h b/libraries/networking/src/NodeList.h index b05e19d349..3aae3e3dfc 100644 --- a/libraries/networking/src/NodeList.h +++ b/libraries/networking/src/NodeList.h @@ -76,7 +76,7 @@ public slots: void processDomainServerAddedNode(QSharedPointer packet); void processDomainServerPathResponse(QSharedPointer packet); - void processDomainServerConnectionToken(QSharedPointer packet); + void processDomainServerConnectionTokenPacket(QSharedPointer packet); void processPingPacket(QSharedPointer packet, SharedNodePointer sendingNode); void processPingReplyPacket(QSharedPointer packet, SharedNodePointer sendingNode);