Fix DomainServerConnectionTOken packet writing/resetting

This commit is contained in:
bwent 2015-07-31 09:33:46 -07:00
parent 244cc016ab
commit af293ec6dd
3 changed files with 12 additions and 11 deletions

View file

@ -630,7 +630,9 @@ void DomainServer::processConnectRequestPacket(QSharedPointer<NLPacket> packet)
QList<NodeType_t> nodeInterestList;
QString username;
QByteArray usernameSignature;
auto limitedNodeList = DependencyManager::get<LimitedNodeList>();
packetStream >> nodeInterestList;
if (packet->bytesLeftToRead() > 0) {
@ -638,24 +640,23 @@ void DomainServer::processConnectRequestPacket(QSharedPointer<NLPacket> 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<LimitedNodeList>();
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) {

View file

@ -457,7 +457,7 @@ void NodeList::pingPunchForDomainServer() {
}
void NodeList::processDomainServerConnectionToken(QSharedPointer<NLPacket> packet) {
void NodeList::processDomainServerConnectionTokenPacket(QSharedPointer<NLPacket> packet) {
if (_domainHandler.getSockAddr().isNull()) {
// refuse to process this packet if we aren't currently connected to the DS
return;

View file

@ -76,7 +76,7 @@ public slots:
void processDomainServerAddedNode(QSharedPointer<NLPacket> packet);
void processDomainServerPathResponse(QSharedPointer<NLPacket> packet);
void processDomainServerConnectionToken(QSharedPointer<NLPacket> packet);
void processDomainServerConnectionTokenPacket(QSharedPointer<NLPacket> packet);
void processPingPacket(QSharedPointer<NLPacket> packet, SharedNodePointer sendingNode);
void processPingReplyPacket(QSharedPointer<NLPacket> packet, SharedNodePointer sendingNode);