Refactor DomainConnectRequest handling to differentiate between initial request without signature and subsequent request with signature based on connection token availability

This commit is contained in:
MayaTheShy
2025-11-16 19:55:34 -05:00
parent 80be297083
commit d33de0d577

View File

@@ -1437,13 +1437,23 @@ void OverteClient::sendDomainConnectRequest() {
std::string metaverseUsername = ""; std::string metaverseUsername = "";
std::vector<uint8_t> usernameSignature; std::vector<uint8_t> usernameSignature;
// If we have authentication and a connection token, use authenticated mode // If we have authentication:
if (m_auth && m_auth->hasKeypair() && !m_connectionToken.empty()) { // - First request: send username WITHOUT signature (connectionToken empty)
// - Second request (after receiving token): send username WITH signature
if (m_auth && m_auth->hasKeypair()) {
metaverseUsername = m_auth->getUsername(); metaverseUsername = m_auth->getUsername();
usernameSignature = m_auth->getUsernameSignature(m_connectionToken);
std::cout << "[OverteClient] Sending authenticated DomainConnectRequest for user '" if (!m_connectionToken.empty()) {
<< metaverseUsername << "' with " << usernameSignature.size() // We have a connection token - send username WITH signature
<< "-byte signature" << std::endl; usernameSignature = m_auth->getUsernameSignature(m_connectionToken);
std::cout << "[OverteClient] Sending authenticated DomainConnectRequest for user '"
<< metaverseUsername << "' with " << usernameSignature.size()
<< "-byte signature" << std::endl;
} else {
// First request - send username WITHOUT signature to request connection token
std::cout << "[OverteClient] Sending DomainConnectRequest with username '"
<< metaverseUsername << "' (requesting connection token)" << std::endl;
}
} }
qs.writeQString(metaverseUsername); qs.writeQString(metaverseUsername);
@@ -1452,7 +1462,7 @@ void OverteClient::sendDomainConnectRequest() {
if (!usernameSignature.empty()) { if (!usernameSignature.empty()) {
qs.writeQByteArray(usernameSignature); qs.writeQByteArray(usernameSignature);
} else { } else {
// Send empty QString as placeholder when no authentication // Send empty QString as placeholder when no signature available yet
qs.writeQString(""); qs.writeQString("");
} }