From 87803e512414efcd19983a9ae381f46c45ce5301 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 5 Sep 2021 22:55:24 +1200 Subject: [PATCH] Use client WebSocket address as WebRTC address --- domain-server/src/NodeConnectionData.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/domain-server/src/NodeConnectionData.cpp b/domain-server/src/NodeConnectionData.cpp index 6e0c8427ba..d7d813e3df 100644 --- a/domain-server/src/NodeConnectionData.cpp +++ b/domain-server/src/NodeConnectionData.cpp @@ -17,7 +17,7 @@ NodeConnectionData NodeConnectionData::fromDataStream(QDataStream& dataStream, const SockAddr& senderSockAddr, bool isConnectRequest) { NodeConnectionData newHeader; - + if (isConnectRequest) { dataStream >> newHeader.connectUUID; @@ -58,16 +58,21 @@ NodeConnectionData NodeConnectionData::fromDataStream(QDataStream& dataStream, c newHeader.publicSockAddr.setType(publicSocketType); newHeader.localSockAddr.setType(localSocketType); - // For WebRTC connections, the user client doesn't know the WebRTC data channel ID that the domain server is using as its - // SockAddr port, so set the port values here. + // For WebRTC connections, the user client's signaling channel WebSocket address is used instead of the actual data + // channel's address. if (senderSockAddr.getType() == SocketType::WebRTC) { if (newHeader.publicSockAddr.getType() != SocketType::WebRTC || newHeader.localSockAddr.getType() != SocketType::WebRTC) { qDebug() << "Inconsistent WebRTC socket types!"; } - newHeader.publicSockAddr.setPort(senderSockAddr.getPort()); // We don't know whether it's a public or local connection - newHeader.localSockAddr.setPort(senderSockAddr.getPort()); // so set both ports. + // We don't know whether it's a public or local connection so set both the same. + auto address = senderSockAddr.getAddress(); + auto port = senderSockAddr.getPort(); + newHeader.publicSockAddr.setAddress(address); + newHeader.publicSockAddr.setPort(port); + newHeader.localSockAddr.setAddress(address); + newHeader.localSockAddr.setPort(port); } newHeader.senderSockAddr = senderSockAddr;