From 0e1241ca60ef117801a2a996106827ad0f593bf6 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Fri, 27 Feb 2026 05:05:44 -0800 Subject: [PATCH] Propagate realm-reported build to world handshake for vanilla compatibility - Prefer realm.build over profile worldBuild when non-zero in CMSG_AUTH_SESSION - Fixes vanilla (1.12.1 build 5875) servers rejecting connection due to wrong build - Suppress v0.0.0 display in realm list when version info is all zeros --- src/core/application.cpp | 10 +++++++++- src/ui/realm_screen.cpp | 6 +++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/core/application.cpp b/src/core/application.cpp index 918568d3..cf37e881 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -1349,16 +1349,18 @@ void Application::setupUICallbacks() { } uint32_t realmId = 0; + uint16_t realmBuild = 0; { // WotLK AUTH_SESSION includes a RealmID field; some servers reject if it's wrong/zero. const auto& realms = authHandler->getRealms(); for (const auto& r : realms) { if (r.name == realmName && r.address == realmAddress) { realmId = r.id; + realmBuild = r.build; break; } } - LOG_INFO("Selected realmId=", realmId); + LOG_INFO("Selected realmId=", realmId, " realmBuild=", realmBuild); } uint32_t clientBuild = 12340; // default WotLK @@ -1366,6 +1368,12 @@ void Application::setupUICallbacks() { auto* profile = expansionRegistry_->getActive(); if (profile) clientBuild = profile->worldBuild; } + // Prefer realm-reported build when available (e.g. vanilla servers + // that report build 5875 in the realm list) + if (realmBuild != 0) { + clientBuild = realmBuild; + LOG_INFO("Using realm-reported build: ", clientBuild); + } if (gameHandler->connect(host, port, sessionKey, accountName, clientBuild, realmId)) { LOG_INFO("Connected to world server, transitioning to character selection"); setState(AppState::CHARACTER_SELECTION); diff --git a/src/ui/realm_screen.cpp b/src/ui/realm_screen.cpp index 0410174c..589634a1 100644 --- a/src/ui/realm_screen.cpp +++ b/src/ui/realm_screen.cpp @@ -179,10 +179,10 @@ void RealmScreen::render(auth::AuthHandler& authHandler) { ImGui::TextColored(ImVec4(0.4f, 0.9f, 1.0f, 1.0f), " - %d character%s", realm.characters, realm.characters > 1 ? "s" : ""); } - if (realm.hasVersionInfo()) { + if (realm.hasVersionInfo() && (realm.majorVersion || realm.build)) { ImGui::SameLine(); - ImGui::TextDisabled(" v%d.%d.%d", - realm.majorVersion, realm.minorVersion, realm.patchVersion); + ImGui::TextDisabled(" v%d.%d.%d (build %d)", + realm.majorVersion, realm.minorVersion, realm.patchVersion, realm.build); } ImGui::Spacing();