diff --git a/assignment-client/src/AssignmentClient.cpp b/assignment-client/src/AssignmentClient.cpp index aab5d6af3b..6da3786ef7 100644 --- a/assignment-client/src/AssignmentClient.cpp +++ b/assignment-client/src/AssignmentClient.cpp @@ -210,7 +210,7 @@ void AssignmentClient::sendAssignmentRequest() { } } -void AssignmentClient::handleCreateAssignmentPacket(QSharedPointer packet, SharedNodePointer senderNode, HifiSockAddr senderSockAddr) { +void AssignmentClient::handleCreateAssignmentPacket(QSharedPointer packet) { qDebug() << "Received a PacketType::CreateAssignment - attempting to unpack."; // construct the deployed assignment from the packet data @@ -223,7 +223,7 @@ void AssignmentClient::handleCreateAssignmentPacket(QSharedPointer pac // switch our DomainHandler hostname and port to whoever sent us the assignment - nodeList->getDomainHandler().setSockAddr(senderSockAddr, _assignmentServerHostname); + nodeList->getDomainHandler().setSockAddr(packet->getSenderSockAddr(), _assignmentServerHostname); nodeList->getDomainHandler().setAssignmentUUID(_currentAssignment->getUUID()); qDebug() << "Destination IP for assignment is" << nodeList->getDomainHandler().getIP().toString(); @@ -261,7 +261,9 @@ void AssignmentClient::handleCreateAssignmentPacket(QSharedPointer pac } } -void AssignmentClient::handleStopNodePacket(QSharedPointer packet, SharedNodePointer senderNode, HifiSockAddr senderSockAddr) { +void AssignmentClient::handleStopNodePacket(QSharedPointer packet) { + const HifiSockAddr& senderSockAddr = packet->getSenderSockAddr(); + if (senderSockAddr.getAddress() == QHostAddress::LocalHost || senderSockAddr.getAddress() == QHostAddress::LocalHostIPv6) { qDebug() << "AssignmentClientMonitor at" << senderSockAddr << "requested stop via PacketType::StopNode."; diff --git a/assignment-client/src/AssignmentClient.h b/assignment-client/src/AssignmentClient.h index e18e8eea4d..348255751c 100644 --- a/assignment-client/src/AssignmentClient.h +++ b/assignment-client/src/AssignmentClient.h @@ -39,8 +39,8 @@ public slots: void aboutToQuit(); private slots: - void handleCreateAssignmentPacket(QSharedPointer packet, SharedNodePointer senderNode, HifiSockAddr senderSockAddr); - void handleStopNodePacket(QSharedPointer packet, SharedNodePointer senderNode, HifiSockAddr senderSockAddr); + void handleCreateAssignmentPacket(QSharedPointer packet); + void handleStopNodePacket(QSharedPointer packet); private: void setUpStatusToMonitor(); diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 02202100be..b0a50403c6 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -432,9 +432,8 @@ void AvatarMixer::handleAvatarBillboardPacket(QSharedPointer packet, S } } -void AvatarMixer::handleKillAvatarPacket(QSharedPointer packet, SharedNodePointer senderNode) { - auto nodeList = DependencyManager::get(); - nodeList->processKillNode(*packet); +void AvatarMixer::handleKillAvatarPacket(QSharedPointer packet) { + DependencyManager::get()->processKillNode(*packet); } void AvatarMixer::sendStatsPacket() { diff --git a/assignment-client/src/avatars/AvatarMixer.h b/assignment-client/src/avatars/AvatarMixer.h index d0ced8cdfd..034269f7fa 100644 --- a/assignment-client/src/avatars/AvatarMixer.h +++ b/assignment-client/src/avatars/AvatarMixer.h @@ -35,7 +35,7 @@ private slots: void handleAvatarDataPacket(QSharedPointer packet, SharedNodePointer senderNode); void handleAvatarIdentityPacket(QSharedPointer packet, SharedNodePointer senderNode); void handleAvatarBillboardPacket(QSharedPointer packet, SharedNodePointer senderNode); - void handleKillAvatarPacket(QSharedPointer packet, SharedNodePointer senderNode); + void handleKillAvatarPacket(QSharedPointer packet); private: void broadcastAvatarData(); diff --git a/assignment-client/src/entities/EntityServer.cpp b/assignment-client/src/entities/EntityServer.cpp index 2a6815c2d5..c9c999077c 100644 --- a/assignment-client/src/entities/EntityServer.cpp +++ b/assignment-client/src/entities/EntityServer.cpp @@ -26,9 +26,8 @@ EntityServer::EntityServer(NLPacket& packet) : _entitySimulation(NULL) { auto& packetReceiver = DependencyManager::get()->getPacketReceiver(); - packetReceiver.registerListener(PacketType::EntityAdd, this, "handleEntityAddPacket"); - packetReceiver.registerListener(PacketType::EntityEdit, this, "handleEntityEditPacket"); - packetReceiver.registerListener(PacketType::EntityErase, this, "handleEntityErasePacket"); + packetReceiver.registerListenerForTypes({ PacketType::EntityAdd, PacketType::EntityEdit, PacketType::EntityErase }, + this, "handleEntityPacket"); } EntityServer::~EntityServer() { @@ -41,19 +40,7 @@ EntityServer::~EntityServer() { tree->removeNewlyCreatedHook(this); } -void EntityServer::handleEntityAddPacket(QSharedPointer packet, SharedNodePointer senderNode) { - if (_octreeInboundPacketProcessor) { - _octreeInboundPacketProcessor->queueReceivedPacket(packet, senderNode); - } -} - -void EntityServer::handleEntityEditPacket(QSharedPointer packet, SharedNodePointer senderNode) { - if (_octreeInboundPacketProcessor) { - _octreeInboundPacketProcessor->queueReceivedPacket(packet, senderNode); - } -} - -void EntityServer::handleEntityErasePacket(QSharedPointer packet, SharedNodePointer senderNode) { +void EntityServer::handleEntityPacket(QSharedPointer packet, SharedNodePointer senderNode) { if (_octreeInboundPacketProcessor) { _octreeInboundPacketProcessor->queueReceivedPacket(packet, senderNode); } diff --git a/assignment-client/src/entities/EntityServer.h b/assignment-client/src/entities/EntityServer.h index dde68dfebd..1c4eda3cc0 100644 --- a/assignment-client/src/entities/EntityServer.h +++ b/assignment-client/src/entities/EntityServer.h @@ -50,9 +50,7 @@ protected: virtual Octree* createTree(); private slots: - void handleEntityAddPacket(QSharedPointer packet, SharedNodePointer senderNode); - void handleEntityEditPacket(QSharedPointer packet, SharedNodePointer senderNode); - void handleEntityErasePacket(QSharedPointer packet, SharedNodePointer senderNode); + void handleEntityPacket(QSharedPointer packet, SharedNodePointer senderNode); private: EntitySimulation* _entitySimulation; diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 579ec1a002..21b2ce0f58 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -1415,7 +1415,7 @@ void DomainServer::processICEPingReplyPacket(QSharedPointer packet) { void DomainServer::processNodeJSONStatsPacket(QSharedPointer packet, SharedNodePointer sendingNode) { if (sendingNode->getLinkedData()) { - reinterpret_cast(sendingNode->getLinkedData())->processJSONStatsPacket(*packet); + dynamic_cast(sendingNode->getLinkedData())->processJSONStatsPacket(*packet); } } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 7886041ff6..f06e01f4c5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3821,7 +3821,7 @@ void Application::domainChanged(const QString& domainHostname) { _domainConnectionRefusals.clear(); } -void Application::handleDomainConnectionDeniedPacket(QSharedPointer packet, SharedNodePointer senderNode) { +void Application::handleDomainConnectionDeniedPacket(QSharedPointer packet) { QDataStream packetStream(packet.data()); QString reason; diff --git a/interface/src/Application.h b/interface/src/Application.h index 4580e762e6..754698acc8 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -447,7 +447,7 @@ public slots: void notifyPacketVersionMismatch(); - void handleDomainConnectionDeniedPacket(QSharedPointer, SharedNodePointer senderNode); + void handleDomainConnectionDeniedPacket(QSharedPointer packet); void cameraMenuChanged(); diff --git a/libraries/entities/src/EntityEditPacketSender.cpp b/libraries/entities/src/EntityEditPacketSender.cpp index 0dd3465b33..160e8721f1 100644 --- a/libraries/entities/src/EntityEditPacketSender.cpp +++ b/libraries/entities/src/EntityEditPacketSender.cpp @@ -22,7 +22,7 @@ EntityEditPacketSender::EntityEditPacketSender() { packetReceiver.registerListener(PacketType::EntityEditNack, this, "processEntityEditNackPacket"); } -void EntityEditPacketSender::processEntityEditNackPacket(QSharedPointer packet, HifiSockAddr senderSockAddr) { +void EntityEditPacketSender::processEntityEditNackPacket(QSharedPointer packet) { // if (!Menu::getInstance()->isOptionChecked(MenuOption::DisableNackPackets)) { processNackPacket(QByteArray::fromRawData(packet->getData(), packet->getSizeWithHeader())); // } diff --git a/libraries/entities/src/EntityEditPacketSender.h b/libraries/entities/src/EntityEditPacketSender.h index 39bd4cdffc..235e340da2 100644 --- a/libraries/entities/src/EntityEditPacketSender.h +++ b/libraries/entities/src/EntityEditPacketSender.h @@ -32,7 +32,7 @@ public: void queueEraseEntityMessage(const EntityItemID& entityItemID); - void processEntityEditNackPacket(QSharedPointer packet, HifiSockAddr senderSockAddr); + void processEntityEditNackPacket(QSharedPointer packet); // My server type is the model server virtual char getMyNodeType() const { return NodeType::EntityServer; } diff --git a/libraries/networking/src/DomainHandler.cpp b/libraries/networking/src/DomainHandler.cpp index 174fbe8cb3..20d13169a3 100644 --- a/libraries/networking/src/DomainHandler.cpp +++ b/libraries/networking/src/DomainHandler.cpp @@ -43,6 +43,7 @@ DomainHandler::DomainHandler(QObject* parent) : packetReceiver.registerListener(PacketType::ICEServerPeerInformation, this, "processICEResponsePacket"); packetReceiver.registerListener(PacketType::DomainServerRequireDTLS, this, "processDTLSRequirementPacket"); + packetReceiver.registerListener(PacketType::ICEPingReply, this, "processICEPingReplyPacket"); } void DomainHandler::clearConnectionInfo() { @@ -286,6 +287,24 @@ void DomainHandler::settingsRequestFinished() { settingsReply->deleteLater(); } +void DomainHandler::processICEPingReplyPacket(QSharedPointer packet) { + const HifiSockAddr& senderSockAddr = packet->getSenderSockAddr(); + qCDebug(networking) << "Received reply from domain-server on" << senderSockAddr; + + if (getIP().isNull()) { + // for now we're unsafely assuming this came back from the domain + if (senderSockAddr == _icePeer.getLocalSocket()) { + qCDebug(networking) << "Connecting to domain using local socket"; + activateICELocalSocket(); + } else if (senderSockAddr == _icePeer.getPublicSocket()) { + qCDebug(networking) << "Conecting to domain using public socket"; + activateICEPublicSocket(); + } else { + qCDebug(networking) << "Reply does not match either local or public socket for domain. Will not connect."; + } + } +} + void DomainHandler::processDTLSRequirementPacket(QSharedPointer dtlsRequirementPacket) { // figure out the port that the DS wants us to use for us to talk to them with DTLS unsigned short dtlsPort; diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h index 82b0c163de..43453e46c5 100644 --- a/libraries/networking/src/DomainHandler.h +++ b/libraries/networking/src/DomainHandler.h @@ -71,9 +71,7 @@ public: void requestDomainSettings(); const QJsonObject& getSettingsObject() const { return _settingsObject; } - void processDTLSRequirementPacket(QSharedPointer dtlsRequirementPacket); - void processICEResponsePacket(QSharedPointer icePacket); - + void setPendingPath(const QString& pendingPath) { _pendingPath = pendingPath; } const QString& getPendingPath() { return _pendingPath; } void clearPendingPath() { _pendingPath.clear(); } @@ -85,6 +83,10 @@ public slots: void setHostnameAndPort(const QString& hostname, quint16 port = DEFAULT_DOMAIN_SERVER_PORT); void setIceServerHostnameAndID(const QString& iceServerHostname, const QUuid& id); + void processICEPingReplyPacket(QSharedPointer packet); + void processDTLSRequirementPacket(QSharedPointer dtlsRequirementPacket); + void processICEResponsePacket(QSharedPointer icePacket); + private slots: void completedHostnameLookup(const QHostInfo& hostInfo); void completedIceServerHostnameLookup(); diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index b0de65ab85..3773a8a540 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -93,12 +93,9 @@ NodeList::NodeList(char newOwnerType, unsigned short socketListenPort, unsigned auto& packetReceiver = getPacketReceiver(); packetReceiver.registerListener(PacketType::DomainList, this, "processDomainServerList"); - packetReceiver.registerListener(PacketType::DomainServerAddedNode, this, "processDomainServerAddedNode"); - packetReceiver.registerListener(PacketType::DomainServerPathResponse, this, "processDomainServerPathQueryResponse"); packetReceiver.registerListener(PacketType::Ping, this, "processPingPacket"); packetReceiver.registerListener(PacketType::PingReply, this, "processPingReplyPacket"); packetReceiver.registerListener(PacketType::ICEPing, this, "processICEPingPacket"); - packetReceiver.registerListener(PacketType::ICEPingReply, this, "processICEPingReplyPacket"); } qint64 NodeList::sendStats(const QJsonObject& statsObject, const HifiSockAddr& destination) { @@ -190,25 +187,6 @@ void NodeList::processICEPingPacket(QSharedPointer packet) { sendPacket(std::move(replyPacket), packet->getSenderSockAddr()); } -void NodeList::processICEPingReplyPacket(QSharedPointer packet) { - const HifiSockAddr& senderSockAddr = packet->getSenderSockAddr(); - qCDebug(networking) << "Received reply from domain-server on" << senderSockAddr; - - if (_domainHandler.getIP().isNull()) { - // for now we're unsafely assuming this came back from the domain - if (senderSockAddr == _domainHandler.getICEPeer().getLocalSocket()) { - qCDebug(networking) << "Connecting to domain using local socket"; - _domainHandler.activateICELocalSocket(); - } else if (senderSockAddr == _domainHandler.getICEPeer().getPublicSocket()) { - qCDebug(networking) << "Conecting to domain using public socket"; - _domainHandler.activateICEPublicSocket(); - } else { - qCDebug(networking) << "Reply does not match either local or public socket for domain. Will not connect."; - } - - } -} - void NodeList::reset() { LimitedNodeList::reset(); diff --git a/libraries/networking/src/NodeList.h b/libraries/networking/src/NodeList.h index 65bd6a6983..b9f782f717 100644 --- a/libraries/networking/src/NodeList.h +++ b/libraries/networking/src/NodeList.h @@ -80,7 +80,6 @@ public slots: void processPingReplyPacket(QSharedPointer packet, SharedNodePointer sendingNode); void processICEPingPacket(QSharedPointer packet); - void processICEPingReplyPacket(QSharedPointer packet); signals: void limitOfSilentDomainCheckInsReached(); private slots: