From ceb7bc00bf5136f5ff529a8b8f4cd0f3d25d07b6 Mon Sep 17 00:00:00 2001 From: MayaTheShy Date: Sat, 8 Nov 2025 16:04:44 -0500 Subject: [PATCH] feat: implement connection to EntityServer with UDP socket setup --- src/OverteClient.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/OverteClient.cpp b/src/OverteClient.cpp index 3f8c559..9500efe 100644 --- a/src/OverteClient.cpp +++ b/src/OverteClient.cpp @@ -96,7 +96,28 @@ bool OverteClient::connectAvatarMixer() { } bool OverteClient::connectEntityServer() { - // TODO: Connect to EntityServer and subscribe to updates. + // Send DomainList request to discover EntityServer endpoint + sendDomainListRequest(); + + // Create UDP socket for EntityServer if not using shared socket + // For now, assume EntityServer is on same host:port+1 as a fallback + addrinfo hints{}; hints.ai_socktype = SOCK_DGRAM; hints.ai_family = AF_UNSPEC; + addrinfo* res = nullptr; + int gai = ::getaddrinfo(m_host.c_str(), std::to_string(m_port + 1).c_str(), &hints, &res); + if (gai == 0) { + for (addrinfo* rp = res; rp; rp = rp->ai_next) { + m_entityFd = ::socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); + if (m_entityFd == -1) continue; + ::fcntl(m_entityFd, F_SETFL, O_NONBLOCK); + std::memcpy(&m_entityAddr, rp->ai_addr, rp->ai_addrlen); + m_entityAddrLen = rp->ai_addrlen; + m_entityServerReady = true; + std::cout << "[OverteClient] EntityServer socket ready for " << m_host << ":" << (m_port + 1) << std::endl; + break; + } + ::freeaddrinfo(res); + } + m_entityServer = true; return true; }