diff --git a/ice-server/src/IceServer.cpp b/ice-server/src/IceServer.cpp index ec93204e85..80519690b6 100644 --- a/ice-server/src/IceServer.cpp +++ b/ice-server/src/IceServer.cpp @@ -62,21 +62,22 @@ void IceServer::processDatagrams() { // so that we can send packets to the heartbeating peer when we need, we need to activate a socket now peer->activateMatchingOrNewSymmetricSocket(sendingSockAddr); } else if (packetType == PacketTypeIceServerQuery) { + QDataStream heartbeatStream(incomingPacket); // this is a node hoping to connect to a heartbeating peer - do we have the heartbeating peer? - QUuid senderUUID = uuidFromPacketHeader(incomingPacket); + QUuid senderUUID; + heartbeatStream >> senderUUID; // pull the public and private sock addrs for this peer HifiSockAddr publicSocket, localSocket; - QDataStream hearbeatStream(incomingPacket); - hearbeatStream.skipRawData(numBytesForPacketHeader(incomingPacket)); + heartbeatStream.skipRawData(numBytesForPacketHeader(incomingPacket)); - hearbeatStream >> publicSocket >> localSocket; + heartbeatStream >> publicSocket >> localSocket; // check if this node also included a UUID that they would like to connect to QUuid connectRequestID; - hearbeatStream >> connectRequestID; + heartbeatStream >> connectRequestID; SharedNetworkPeer matchingPeer = _activePeers.value(connectRequestID); diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index 2572280613..87c150b4bd 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -848,23 +848,22 @@ void LimitedNodeList::updateLocalSockAddr() { } void LimitedNodeList::sendHeartbeatToIceServer(const HifiSockAddr& iceServerSockAddr) { - sendPacketToIceServer(PacketTypeIceServerHeartbeat, iceServerSockAddr, _sessionUUID); + sendPacketToIceServer(PacketType::ICEServerHeartbeat, iceServerSockAddr, _sessionUUID); } void LimitedNodeList::sendPeerQueryToIceServer(const HifiSockAddr& iceServerSockAddr, const QUuid& clientID, const QUuid& peerID) { - sendPacketToIceServer(PacketTypeIceServerQuery, iceServerSockAddr, clientID, peerID); + sendPacketToIceServer(PacketType::ICEServerQuery, iceServerSockAddr, clientID, peerID); } void LimitedNodeList::sendPacketToIceServer(PacketType::Value packetType, const HifiSockAddr& iceServerSockAddr, - const QUuid& headerID, const QUuid& peerID) { + const QUuid& clientID, const QUuid& peerID) { + auto icePacket = Packet::create(packetType); - QByteArray iceRequestByteArray = byteArrayWithUUIDPopulatedHeader(packetType, headerID); - QDataStream iceDataStream(&iceRequestByteArray, QIODevice::Append); + QDataStream iceDataStream(icePacket.get()); + iceDataStream << clientID << _publicSockAddr << _localSockAddr; - iceDataStream << _publicSockAddr << _localSockAddr; - - if (packetType == PacketTypeIceServerQuery) { + if (packetType == PacketType::ICEServerQuery) { assert(!peerID.isNull()); iceDataStream << peerID; @@ -873,7 +872,7 @@ void LimitedNodeList::sendPacketToIceServer(PacketType::Value packetType, const << uuidStringWithoutCurlyBraces(peerID); } - writeUnverifiedDatagram(iceRequestByteArray, iceServerSockAddr); + sendPacket(icePacket, iceServerSockAddr); } void LimitedNodeList::putLocalPortIntoSharedMemory(const QString key, QObject* parent, quint16 localPort) { diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 078207077c..6015272207 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -287,7 +287,7 @@ protected: void stopInitialSTUNUpdate(bool success); - void sendPacketToIceServer(PacketType::Value packetType, const HifiSockAddr& iceServerSockAddr, const QUuid& headerID, + void sendPacketToIceServer(PacketType::Value packetType, const HifiSockAddr& iceServerSockAddr, const QUuid& clientID, const QUuid& peerRequestID = QUuid()); QUuid _sessionUUID;