From 9f5e06503a95795d9c437d8f1ddea9aa8d235840 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sun, 6 Sep 2020 22:05:26 -0700 Subject: [PATCH] begin identifying Packet Type ID=1 as "domain connect" for a future version of the protocol, so we can detect protocol breaks when we shift to using this as our domain connect packet. --- domain-server/src/DomainServer.cpp | 4 +++- libraries/networking/src/udt/PacketHeaders.cpp | 2 +- libraries/networking/src/udt/PacketHeaders.h | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index f0a648b7c0..3acd17f6af 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -661,7 +661,7 @@ bool DomainServer::isPacketVerified(const udt::Packet& packet) { // if this is a mismatching connect packet, we can't simply drop it on the floor // send back a packet to the interface that tells them we refuse connection for a mismatch - if (headerType == PacketType::DomainConnectRequest + if ((headerType == PacketType::DomainConnectRequest || headerType == PacketType::DomainConnectRequestPending) && headerVersion != versionForPacketType(PacketType::DomainConnectRequest)) { DomainGatekeeper::sendProtocolMismatchConnectionDenial(packet.getSenderSockAddr()); } @@ -807,6 +807,8 @@ void DomainServer::setupNodeListAndAssignments() { // register the gatekeeper for the packets it needs to receive packetReceiver.registerListener(PacketType::DomainConnectRequest, PacketReceiver::makeUnsourcedListenerReference(&_gatekeeper, &DomainGatekeeper::processConnectRequestPacket)); + packetReceiver.registerListener(PacketType::DomainConnectRequestPending, + PacketReceiver::makeUnsourcedListenerReference(&_gatekeeper, &DomainGatekeeper::processConnectRequestPacket)); packetReceiver.registerListener(PacketType::ICEPing, PacketReceiver::makeUnsourcedListenerReference(&_gatekeeper, &DomainGatekeeper::processICEPingPacket)); packetReceiver.registerListener(PacketType::ICEPingReply, diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 87bd7941d3..f7c1192886 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -24,7 +24,7 @@ int packetTypeMetaTypeId = qRegisterMetaType(); PacketVersion versionForPacketType(PacketType packetType) { switch (packetType) { - case PacketType::StunResponse: + case PacketType::DomainConnectRequestPending: // keeping the old version to maintain the protocol hash return 17; case PacketType::DomainList: return static_cast(DomainListVersion::HasConnectReason); diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 1d96969035..819551045a 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -33,7 +33,7 @@ public: // This enum must hold 256 or fewer packet types (so the value is <= 255) since it is statically typed as a uint8_t enum class Value : uint8_t { Unknown, - StunResponse, + DomainConnectRequestPending, DomainList, Ping, PingReply, @@ -170,7 +170,7 @@ public: const static QSet getNonSourcedPackets() { const static QSet NON_SOURCED_PACKETS = QSet() - << PacketTypeEnum::Value::StunResponse << PacketTypeEnum::Value::CreateAssignment + << PacketTypeEnum::Value::DomainConnectRequestPending << PacketTypeEnum::Value::CreateAssignment << PacketTypeEnum::Value::RequestAssignment << PacketTypeEnum::Value::DomainServerRequireDTLS << PacketTypeEnum::Value::DomainConnectRequest << PacketTypeEnum::Value::DomainList << PacketTypeEnum::Value::DomainConnectionDenied << PacketTypeEnum::Value::DomainServerPathQuery