From a3cebfea4ed7bb7c4c63377b25cb4d6660274f10 Mon Sep 17 00:00:00 2001 From: MayaTheShy Date: Sun, 9 Nov 2025 23:55:21 -0500 Subject: [PATCH] feat: handle socket binding to 0.0.0.0 by using localhost address in DomainConnectRequest --- src/OverteClient.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/OverteClient.cpp b/src/OverteClient.cpp index 577569e..5e5fd07 100644 --- a/src/OverteClient.cpp +++ b/src/OverteClient.cpp @@ -1270,11 +1270,17 @@ void OverteClient::sendDomainConnectRequest() { if (::getsockname(m_udpFd, reinterpret_cast(&localSs), &localLen) == 0) { if (localSs.ss_family == AF_INET) { auto* sin = reinterpret_cast(&localSs); - localIPv4 = ntohl(sin->sin_addr.s_addr); + uint32_t sockIPv4 = ntohl(sin->sin_addr.s_addr); localPort = ntohs(sin->sin_port); - std::cout << "[OverteClient] getsockname: " << ((localIPv4 >> 24) & 0xFF) << "." - << ((localIPv4 >> 16) & 0xFF) << "." << ((localIPv4 >> 8) & 0xFF) << "." - << (localIPv4 & 0xFF) << ":" << localPort << std::endl; + // If socket is bound to 0.0.0.0 (INADDR_ANY), use 127.0.0.1 for localhost connections + if (sockIPv4 == 0) { + localIPv4 = 0x7F000001; // 127.0.0.1 + } else { + localIPv4 = sockIPv4; + } + std::cout << "[OverteClient] getsockname: " << ((sockIPv4 >> 24) & 0xFF) << "." + << ((sockIPv4 >> 16) & 0xFF) << "." << ((sockIPv4 >> 8) & 0xFF) << "." + << (sockIPv4 & 0xFF) << ":" << localPort << std::endl; } } std::cout << "[OverteClient] Sending local address in DomainConnectRequest: "