From 1b6bcdc59cf06e5fbf342e284e3fc0ace8116c5b Mon Sep 17 00:00:00 2001 From: fallenoak Date: Thu, 9 Oct 2025 00:18:41 -0500 Subject: [PATCH] feat(glue): handle errors with urls in CGlueMgr::PollAccountLogin --- src/glue/CGlueMgr.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/glue/CGlueMgr.cpp b/src/glue/CGlueMgr.cpp index 12380e7..4ee83ff 100644 --- a/src/glue/CGlueMgr.cpp +++ b/src/glue/CGlueMgr.cpp @@ -74,6 +74,11 @@ int32_t CGlueMgr::m_showedDisconnect; CSimpleTop* CGlueMgr::m_simpleTop; int32_t CGlueMgr::m_suspended; +struct URLERROR { + int32_t error; + char url[32]; +}; + float CalculateAspectRatio() { auto widescreenVar = CVar::Lookup("widescreen"); auto resolutionVar = CVar::Lookup("gxResolution"); @@ -492,6 +497,14 @@ int32_t CGlueMgr::OnKickReasonMsg(void* param, NETMESSAGE msgId, uint32_t time, } void CGlueMgr::PollAccountLogin(int32_t errorCode, const char* msg, int32_t complete, int32_t result, WOWCS_OPS op) { + static URLERROR s_urlErrors[] = { + { 28, "AUTH_BANNED_URL" }, + { 31, "AUTH_DB_BUSY_URL" }, + { 30, "AUTH_NO_TIME_URL" }, + { 32, "AUTH_SUSPENDED_URL" }, + { 33, "AUTH_PARENTAL_CONTROL_URL" } + }; + auto login = ClientServices::LoginConnection(); if (login->GetLoginServerType() == 1 && CGlueMgr::m_loginState == LOGIN_STATE_FAILED) { @@ -524,7 +537,20 @@ void CGlueMgr::PollAccountLogin(int32_t errorCode, const char* msg, int32_t comp if (result == 0) { if (errorCode != 2) { - // TODO + URLERROR* urlError = nullptr; + + for (auto& ue : s_urlErrors) { + if (errorCode == ue.error) { + urlError = &ue; + break; + } + } + + if (urlError) { + FrameScript_SignalEvent(OPEN_STATUS_DIALOG,"%s%s%s", "OKAY_WITH_URL", urlError->url); + } else { + FrameScript_SignalEvent(OPEN_STATUS_DIALOG, "%s%s", "OKAY", msg); + } } CGlueMgr::SetIdleState(IDLE_NONE);