diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 75399d1a9b..29656f4465 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -358,7 +358,7 @@ SharedNodePointer DomainGatekeeper::processAssignmentConnectRequest(const NodeCo nodeData->setNodeVersion(it->second.getNodeVersion()); nodeData->setHardwareAddress(nodeConnection.hardwareAddress); nodeData->setMachineFingerprint(nodeConnection.machineFingerprint); - nodeData->setLastDomainCheckinTimestamp(nodeConnection.lastPingTimestamp); + nodeData->setWasAssigned(true); // cleanup the PendingAssignedNodeData for this assignment now that it's connecting @@ -499,9 +499,6 @@ SharedNodePointer DomainGatekeeper::processAgentConnectRequest(const NodeConnect // set the machine fingerprint passed in the connect request nodeData->setMachineFingerprint(nodeConnection.machineFingerprint); - // set the last ping timestamp passed in the connect request - nodeData->setLastDomainCheckinTimestamp(nodeConnection.lastPingTimestamp); - // also add an interpolation to DomainServerNodeData so that servers can get username in stats nodeData->addOverrideForKey(USERNAME_UUID_REPLACEMENT_STATS_KEY, uuidStringWithoutCurlyBraces(newNode->getUUID()), username); diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 37643cc372..051dd989f5 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -1068,8 +1068,6 @@ void DomainServer::processListRequestPacket(QSharedPointer mess // update the connecting hostname in case it has changed nodeData->setPlaceName(nodeRequestData.placeName); - nodeData->setLastDomainCheckinTimestamp(nodeRequestData.lastPingTimestamp); - sendDomainListToNode(sendingNode, message->getSenderSockAddr()); } @@ -1176,10 +1174,6 @@ void DomainServer::sendDomainListToNode(const SharedNodePointer& node, const Hif DomainServerNodeData* nodeData = static_cast(node->getLinkedData()); - domainListStream << nodeData->getLastDomainCheckinTimestamp(); - - domainListStream << usecTimestampNow(); - // store the nodeInterestSet on this DomainServerNodeData, in case it has changed auto& nodeInterestSet = nodeData->getNodeInterestSet(); diff --git a/domain-server/src/DomainServerNodeData.h b/domain-server/src/DomainServerNodeData.h index 370886cbce..f465cceb96 100644 --- a/domain-server/src/DomainServerNodeData.h +++ b/domain-server/src/DomainServerNodeData.h @@ -61,9 +61,6 @@ public: void setMachineFingerprint(const QUuid& machineFingerprint) { _machineFingerprint = machineFingerprint; } const QUuid& getMachineFingerprint() { return _machineFingerprint; } - void setLastDomainCheckinTimestamp(quint64 lastDomainCheckinTimestamp) { _lastDomainCheckinTimestamp = lastDomainCheckinTimestamp; } - quint64 getLastDomainCheckinTimestamp() { return _lastDomainCheckinTimestamp; } - void addOverrideForKey(const QString& key, const QString& value, const QString& overrideValue); void removeOverrideForKey(const QString& key, const QString& value); @@ -96,7 +93,7 @@ private: QString _nodeVersion; QString _hardwareAddress; QUuid _machineFingerprint; - quint64 _lastDomainCheckinTimestamp; + QString _placeName; bool _wasAssigned { false }; diff --git a/domain-server/src/NodeConnectionData.cpp b/domain-server/src/NodeConnectionData.cpp index b3ea005bd1..0a3782d79b 100644 --- a/domain-server/src/NodeConnectionData.cpp +++ b/domain-server/src/NodeConnectionData.cpp @@ -36,8 +36,6 @@ NodeConnectionData NodeConnectionData::fromDataStream(QDataStream& dataStream, c // now the machine fingerprint dataStream >> newHeader.machineFingerprint; } - - dataStream >> newHeader.lastPingTimestamp; dataStream >> newHeader.nodeType >> newHeader.publicSockAddr >> newHeader.localSockAddr diff --git a/domain-server/src/NodeConnectionData.h b/domain-server/src/NodeConnectionData.h index 779411d11e..dd9ca6b650 100644 --- a/domain-server/src/NodeConnectionData.h +++ b/domain-server/src/NodeConnectionData.h @@ -22,7 +22,6 @@ public: bool isConnectRequest = true); QUuid connectUUID; - quint64 lastPingTimestamp{ 0 }; NodeType_t nodeType; HifiSockAddr publicSockAddr; HifiSockAddr localSockAddr; diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 31576ff8d9..4f0e3ca9bd 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -412,8 +412,6 @@ void NodeList::sendDomainServerCheckIn() { packetStream << FingerprintUtils::getMachineFingerprint(); } - packetStream << usecTimestampNow(); - // 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.load() << publicSockAddr << localSockAddr << _nodeTypesOfInterest.toList(); @@ -620,58 +618,12 @@ void NodeList::processDomainServerConnectionTokenPacket(QSharedPointer message) { - - // parse header information - QDataStream packetStream(message->getMessage()); - - // grab the domain's ID from the beginning of the packet - QUuid domainUUID; - packetStream >> domainUUID; - - Node::LocalID domainLocalID; - packetStream >> domainLocalID; - - // pull our owner (ie. session) UUID from the packet, it's always the first thing - // The short (16 bit) ID comes next. - QUuid newUUID; - Node::LocalID newLocalID; - packetStream >> newUUID; - packetStream >> newLocalID; - - // pull the permissions/right/privileges for this node out of the stream - NodePermissions newPermissions; - packetStream >> newPermissions; - setPermissions(newPermissions); - // Is packet authentication enabled? - bool isAuthenticated; - packetStream >> isAuthenticated; - setAuthenticatePackets(isAuthenticated); - - quint64 connectRequestTimestamp; - quint64 now = usecTimestampNow(); - packetStream >> connectRequestTimestamp; - quint64 pingLagTime = (now - connectRequestTimestamp) / USECS_PER_MSEC; - quint64 domainServerPingReceiveTime; - - packetStream >> domainServerPingReceiveTime; - quint64 domainServerRequestLag = (domainServerPingReceiveTime - connectRequestTimestamp) / USECS_PER_MSEC; - quint64 domainServerResponseLag = (now - domainServerPingReceiveTime) / USECS_PER_MSEC; - if (_domainHandler.getSockAddr().isNull()) { - qWarning(networking) << "IGNORING DomainList packet while not connected to a Domain Server: sent " << pingLagTime << " msec ago."; - qWarning(networking) << "DomainList request lag (with skew): " << domainServerRequestLag << "msec"; - qWarning(networking) << "DomainList response lag (with skew): " << domainServerResponseLag << "msec"; + qWarning() << "IGNORING DomainList packet while not connected to a Domain Server"; // refuse to process this packet if we aren't currently connected to the DS return; } - // warn if ping lag is getting long - if (pingLagTime > MSECS_PER_SECOND) { - qCDebug(networking) << "DomainList ping is lagging: " << pingLagTime << "msec"; - qCDebug(networking) << "DomainList request lag (with skew): " << domainServerRequestLag << "msec"; - qCDebug(networking) << "DomainList response lag (with skew): " << domainServerResponseLag << "msec"; - } - // this is a packet from the domain server, reset the count of un-replied check-ins _domainHandler.clearPendingCheckins(); @@ -680,15 +632,28 @@ void NodeList::processDomainServerList(QSharedPointer message) DependencyManager::get()->flagTimeForConnectionStep(LimitedNodeList::ConnectionStep::ReceiveDSList); + QDataStream packetStream(message->getMessage()); + + // grab the domain's ID from the beginning of the packet + QUuid domainUUID; + packetStream >> domainUUID; + if (_domainHandler.isConnected() && _domainHandler.getUUID() != domainUUID) { // Recieved packet from different domain. - qWarning() << "IGNORING DomainList packet from" << domainUUID << "while connected to" - << _domainHandler.getUUID() << ": sent " << pingLagTime << " msec ago."; - qWarning(networking) << "DomainList request lag (with skew): " << domainServerRequestLag << "msec"; - qWarning(networking) << "DomainList response lag (with skew): " << domainServerResponseLag << "msec"; + qWarning() << "IGNORING DomainList packet from" << domainUUID << "while connected to" << _domainHandler.getUUID(); return; } + Node::LocalID domainLocalID; + packetStream >> domainLocalID; + + // pull our owner (ie. session) UUID from the packet, it's always the first thing + // The short (16 bit) ID comes next. + QUuid newUUID; + Node::LocalID newLocalID; + packetStream >> newUUID; + packetStream >> newLocalID; + // when connected, if the session ID or local ID were not null and changed, we should reset auto currentLocalID = getSessionLocalID(); auto currentSessionID = getSessionUUID(); @@ -719,6 +684,15 @@ void NodeList::processDomainServerList(QSharedPointer message) DependencyManager::get()->lookupShareableNameForDomainID(domainUUID); } + // pull the permissions/right/privileges for this node out of the stream + NodePermissions newPermissions; + packetStream >> newPermissions; + setPermissions(newPermissions); + // Is packet authentication enabled? + bool isAuthenticated; + packetStream >> isAuthenticated; + setAuthenticatePackets(isAuthenticated); + // pull each node in the packet while (packetStream.device()->pos() < message->getSize()) { parseNodeFromPacketStream(packetStream); diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 566e1e4946..f8574b3b94 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -27,7 +27,7 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::StunResponse: return 17; case PacketType::DomainList: - return static_cast(DomainListVersion::HasTimestamp); + return static_cast(DomainListVersion::AuthenticationOptional); case PacketType::EntityAdd: case PacketType::EntityClone: case PacketType::EntityEdit: @@ -72,7 +72,7 @@ PacketVersion versionForPacketType(PacketType packetType) { return static_cast(DomainConnectionDeniedVersion::IncludesExtraInfo); case PacketType::DomainConnectRequest: - return static_cast(DomainConnectRequestVersion::HasTimestamp); + return static_cast(DomainConnectRequestVersion::AlwaysHasMachineFingerprint); case PacketType::DomainServerAddedNode: return static_cast(DomainServerAddedNodeVersion::PermissionsGrid); diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 903c1f4c93..5deadd8c43 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -344,8 +344,7 @@ enum class DomainConnectRequestVersion : PacketVersion { HasProtocolVersions, HasMACAddress, HasMachineFingerprint, - AlwaysHasMachineFingerprint, - HasTimestamp + AlwaysHasMachineFingerprint }; enum class DomainConnectionDeniedVersion : PacketVersion { @@ -364,8 +363,7 @@ enum class DomainListVersion : PacketVersion { PermissionsGrid, GetUsernameFromUUIDSupport, GetMachineFingerprintFromUUIDSupport, - AuthenticationOptional, - HasTimestamp + AuthenticationOptional }; enum class AudioVersion : PacketVersion {