aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2017-05-13 17:25:21 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-05-13 17:25:21 +0200
commit229c78b5a38dc58e14f4912de49437b68341452b (patch)
treec7091cb6eb5044865cb35659646df9bf0e691009 /src
parentbd456342e2e2e63264c1884e417b2779c9dab019 (diff)
Core/Packets: Implemented CMSG_QUERY_REALM_NAME and SMSG_REALM_QUERY_RESPONSE
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp13
-rw-r--r--src/server/game/Globals/ObjectMgr.h1
-rw-r--r--src/server/game/Handlers/AuthHandler.cpp5
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp16
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp36
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h37
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp15
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h23
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/WorldSession.h3
-rw-r--r--src/server/game/World/World.cpp8
-rw-r--r--src/server/shared/Realm/Realm.cpp7
-rw-r--r--src/server/shared/Realm/Realm.h3
-rw-r--r--src/server/shared/Realm/RealmList.cpp3
-rw-r--r--src/server/worldserver/Main.cpp1
16 files changed, 142 insertions, 40 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index d081a1d0ed9..da458834b51 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -9635,6 +9635,19 @@ std::string ObjectMgr::GetNormalizedRealmName(uint32 realmId) const
return name;
}
+bool ObjectMgr::GetRealmName(uint32 realmId, std::string& name, std::string& normalizedName) const
+{
+ RealmNameContainer::const_iterator itr = _realmNameStore.find(realmId);
+ if (itr != _realmNameStore.end())
+ {
+ name = itr->second;
+ normalizedName = itr->second;
+ normalizedName.erase(std::remove_if(normalizedName.begin(), normalizedName.end(), ::isspace), normalizedName.end());
+ return true;
+ }
+ return false;
+}
+
void ObjectMgr::LoadGameObjectQuestItems()
{
uint32 oldMSTime = getMSTime();
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 5828bd65016..8bd95bf5e82 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -1396,6 +1396,7 @@ class TC_GAME_API ObjectMgr
std::string GetRealmName(uint32 realm) const;
std::string GetNormalizedRealmName(uint32 realm) const;
+ bool GetRealmName(uint32 realmId, std::string& name, std::string& normalizedName) const;
ExpansionRequirementContainer const& GetRaceExpansionRequirements() const { return _raceExpansionRequirementStore; }
uint8 GetRaceExpansionRequirement(uint8 race) const
diff --git a/src/server/game/Handlers/AuthHandler.cpp b/src/server/game/Handlers/AuthHandler.cpp
index 342982bbe00..016c324b232 100644
--- a/src/server/game/Handlers/AuthHandler.cpp
+++ b/src/server/game/Handlers/AuthHandler.cpp
@@ -34,12 +34,11 @@ void WorldSession::SendAuthResponse(uint32 code, bool queued, uint32 queuePos)
response.SuccessInfo->AccountExpansionLevel = GetExpansion();
response.SuccessInfo->ActiveExpansionLevel = GetExpansion();
- response.SuccessInfo->VirtualRealmAddress = GetVirtualRealmAddress();
+ response.SuccessInfo->VirtualRealmAddress = realm.Id.GetAddress();
response.SuccessInfo->Time = int32(time(nullptr));
// Send current home realm. Also there is no need to send it later in realm queries.
- response.SuccessInfo->VirtualRealms.emplace_back(GetVirtualRealmAddress(), true, false,
- sObjectMgr->GetRealmName(realm.Id.Realm), sObjectMgr->GetNormalizedRealmName(realm.Id.Realm));
+ response.SuccessInfo->VirtualRealms.emplace_back(realm.Id.GetAddress(), true, false, realm.Name, realm.NormalizedName);
if (HasPermission(rbac::RBAC_PERM_USE_CHARACTER_TEMPLATES))
for (auto const& templ : sCharacterTemplateDataStore->GetCharacterTemplates())
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp
index 47803e0cfbc..0a9d1c60380 100644
--- a/src/server/game/Handlers/QueryHandler.cpp
+++ b/src/server/game/Handlers/QueryHandler.cpp
@@ -410,3 +410,19 @@ void WorldSession::HandleItemTextQuery(WorldPackets::Query::ItemTextQuery& itemT
SendPacket(queryItemTextResponse.Write());
}
+
+void WorldSession::HandleQueryRealmName(WorldPackets::Query::QueryRealmName& queryRealmName)
+{
+ WorldPackets::Query::RealmQueryResponse realmQueryResponse;
+ realmQueryResponse.VirtualRealmAddress = queryRealmName.VirtualRealmAddress;
+
+ Battlenet::RealmHandle realmHandle(queryRealmName.VirtualRealmAddress);
+ if (sObjectMgr->GetRealmName(realmHandle.Realm, realmQueryResponse.NameInfo.RealmNameActual, realmQueryResponse.NameInfo.RealmNameNormalized))
+ {
+ realmQueryResponse.LookupState = RESPONSE_SUCCESS;
+ realmQueryResponse.NameInfo.IsInternalRealm = false;
+ realmQueryResponse.NameInfo.IsLocal = queryRealmName.VirtualRealmAddress == realm.Id.GetAddress();
+ }
+ else
+ realmQueryResponse.LookupState = RESPONSE_FAILURE;
+}
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index 531dc81caa1..9ed123f4872 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -19,6 +19,28 @@
#include "CharacterTemplateDataStore.h"
#include "HmacHash.h"
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::VirtualRealmNameInfo const& virtualRealmInfo)
+{
+ data.WriteBit(virtualRealmInfo.IsLocal);
+ data.WriteBit(virtualRealmInfo.IsInternalRealm);
+ data.WriteBits(virtualRealmInfo.RealmNameActual.length(), 8);
+ data.WriteBits(virtualRealmInfo.RealmNameNormalized.length(), 8);
+ data.FlushBits();
+
+ data.WriteString(virtualRealmInfo.RealmNameActual);
+ data.WriteString(virtualRealmInfo.RealmNameNormalized);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::VirtualRealmInfo const& virtualRealmInfo)
+{
+ data << uint32(virtualRealmInfo.RealmAddress);
+ data << virtualRealmInfo.RealmNameInfo;
+
+ return data;
+}
+
bool WorldPackets::Auth::EarlyProcessClientPacket::ReadNoThrow()
{
try
@@ -144,18 +166,8 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
if (SuccessInfo->NumPlayersAlliance)
_worldPacket << uint16(*SuccessInfo->NumPlayersAlliance);
- for (auto const& virtualRealm : SuccessInfo->VirtualRealms)
- {
- _worldPacket << uint32(virtualRealm.RealmAddress);
- _worldPacket.WriteBit(virtualRealm.IsLocal);
- _worldPacket.WriteBit(virtualRealm.IsInternalRealm);
- _worldPacket.WriteBits(virtualRealm.RealmNameActual.length(), 8);
- _worldPacket.WriteBits(virtualRealm.RealmNameNormalized.length(), 8);
- _worldPacket.FlushBits();
-
- _worldPacket.WriteString(virtualRealm.RealmNameActual);
- _worldPacket.WriteString(virtualRealm.RealmNameNormalized);
- }
+ for (VirtualRealmInfo const& virtualRealm : SuccessInfo->VirtualRealms)
+ _worldPacket << virtualRealm;
for (CharacterTemplate const* templat : SuccessInfo->Templates)
{
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h
index 5c1bf9f6da6..2c7a17d217d 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.h
+++ b/src/server/game/Server/Packets/AuthenticationPackets.h
@@ -108,21 +108,30 @@ namespace WorldPackets
bool HasFCM = false; ///< true if the account has a forced character migration pending. @todo implement
};
+ struct VirtualRealmNameInfo
+ {
+ VirtualRealmNameInfo() : IsLocal(false), IsInternalRealm(false) { }
+ VirtualRealmNameInfo(bool isHomeRealm, bool isInternalRealm, std::string const& realmNameActual, std::string const& realmNameNormalized) :
+ IsLocal(isHomeRealm), IsInternalRealm(isInternalRealm), RealmNameActual(realmNameActual), RealmNameNormalized(realmNameNormalized) { }
+
+ bool IsLocal; ///< true if the realm is the same as the account's home realm
+ bool IsInternalRealm; ///< @todo research
+ std::string RealmNameActual; ///< the name of the realm
+ std::string RealmNameNormalized; ///< the name of the realm without spaces
+ };
+
+ struct VirtualRealmInfo
+ {
+ VirtualRealmInfo(uint32 realmAddress, bool isHomeRealm, bool isInternalRealm, std::string const& realmNameActual, std::string const& realmNameNormalized) :
+ RealmAddress(realmAddress), RealmNameInfo(isHomeRealm, isInternalRealm, realmNameActual, realmNameNormalized) { }
+
+ uint32 RealmAddress; ///< the virtual address of this realm, constructed as RealmHandle::Region << 24 | RealmHandle::Battlegroup << 16 | RealmHandle::Index
+ VirtualRealmNameInfo RealmNameInfo;
+ };
+
class AuthResponse final : public ServerPacket
{
public:
- struct RealmInfo
- {
- RealmInfo(uint32 realmAddress, bool isHomeRealm, bool isInternalRealm, std::string const& realmNameActual, std::string const& realmNameNormalized) :
- RealmAddress(realmAddress), IsLocal(isHomeRealm), IsInternalRealm(isInternalRealm), RealmNameActual(realmNameActual), RealmNameNormalized(realmNameNormalized) { }
-
- uint32 RealmAddress; ///< the virtual address of this realm, constructed as RealmHandle::Region << 24 | RealmHandle::Battlegroup << 16 | RealmHandle::Index
- bool IsLocal; ///< true if the realm is the same as the account's home realm
- bool IsInternalRealm; ///< @todo research
- std::string RealmNameActual; ///< the name of the realm
- std::string RealmNameNormalized; ///< the name of the realm without spaces
- };
-
struct AuthSuccessInfo
{
struct BillingInfo
@@ -143,7 +152,7 @@ namespace WorldPackets
BillingInfo Billing;
- std::vector<RealmInfo> VirtualRealms; ///< list of realms connected to this one (inclusive) @todo implement
+ std::vector<VirtualRealmInfo> VirtualRealms; ///< list of realms connected to this one (inclusive) @todo implement
std::vector<CharacterTemplate const*> Templates; ///< list of pre-made character templates.
ExpansionRequirementContainer const* AvailableClasses = nullptr; ///< the minimum AccountExpansion required to select the classes
@@ -283,4 +292,6 @@ namespace WorldPackets
}
}
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::VirtualRealmNameInfo const& realmInfo);
+
#endif // AuthenticationPacketsWorld_h__
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index 416014c1ced..6d5657d80b6 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -22,7 +22,6 @@
#include "Vehicle.h"
#include "SpellAuras.h"
#include "SpellAuraEffects.h"
-#include "ObjectMgr.h"
WorldPacket const* WorldPackets::Party::PartyCommandResult::Write()
{
@@ -97,9 +96,9 @@ void WorldPackets::Party::PartyInvite::Initialize(Player* const inviter, int32 p
ProposedRoles = proposedRoles;
- InviterVirtualRealmAddress = GetVirtualRealmAddress();
- InviterRealmNameActual = sObjectMgr->GetRealmName(realm.Id.Realm);
- InviterRealmNameNormalized = sObjectMgr->GetNormalizedRealmName(realm.Id.Realm);
+ InviterVirtualRealmAddress = realm.Id.GetAddress();
+ InviterRealmNameActual = realm.Name;
+ InviterRealmNameNormalized = realm.NormalizedName;
}
void WorldPackets::Party::PartyInviteResponse::Read()
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index 84cdb5e1e47..9fa813b005b 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -464,3 +464,18 @@ WorldPacket const* WorldPackets::Query::QueryItemTextResponse::Write()
return &_worldPacket;
}
+
+void WorldPackets::Query::QueryRealmName::Read()
+{
+ _worldPacket >> VirtualRealmAddress;
+}
+
+WorldPacket const* WorldPackets::Query::RealmQueryResponse::Write()
+{
+ _worldPacket << uint32(VirtualRealmAddress);
+ _worldPacket << uint8(LookupState);
+ if (!LookupState)
+ _worldPacket << NameInfo;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index a5f95a9dc49..63fb21875c7 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -19,6 +19,7 @@
#define QueryPackets_h__
#include "Packet.h"
+#include "AuthenticationPackets.h"
#include "Creature.h"
#include "NPCHandler.h"
#include "G3D/Vector3.h"
@@ -407,6 +408,28 @@ namespace WorldPackets
bool Valid = false;
ItemTextCache Item;
};
+
+ class QueryRealmName final : public ClientPacket
+ {
+ public:
+ QueryRealmName(WorldPacket&& packet) : ClientPacket(CMSG_QUERY_REALM_NAME, std::move(packet)) { }
+
+ void Read() override;
+
+ uint32 VirtualRealmAddress = 0;
+ };
+
+ class RealmQueryResponse final : public ServerPacket
+ {
+ public:
+ RealmQueryResponse() : ServerPacket(SMSG_REALM_QUERY_RESPONSE) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 VirtualRealmAddress = 0;
+ uint8 LookupState = 0;
+ WorldPackets::Auth::VirtualRealmNameInfo NameInfo;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 103f3ebbd4d..5d8a6a7c14c 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -653,7 +653,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_QUERY_QUEST_COMPLETION_NPCS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryQuestCompletionNPCs);
DEFINE_HANDLER(CMSG_QUERY_QUEST_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestQueryOpcode);
DEFINE_HANDLER(CMSG_QUERY_QUEST_REWARDS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_QUERY_REALM_NAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_QUERY_REALM_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryRealmName);
DEFINE_HANDLER(CMSG_QUERY_SCENARIO_POI, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryScenarioPOI);
DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryTimeOpcode);
DEFINE_HANDLER(CMSG_QUERY_VOID_STORAGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleVoidStorageQuery);
@@ -1611,7 +1611,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_READY_CHECK_STARTED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_READ_ITEM_RESULT_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_READ_ITEM_RESULT_OK, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_QUERY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECRUIT_A_FRIEND_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_EXPIRED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 3703cdcf513..8974bf2a369 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -558,6 +558,7 @@ namespace WorldPackets
class QueryPetName;
class QuestPOIQuery;
class QueryQuestCompletionNPCs;
+ class QueryRealmName;
class ItemTextQuery;
}
@@ -1747,6 +1748,8 @@ class TC_GAME_API WorldSession
std::unordered_map<uint32, uint8> const& GetRealmCharacterCounts() const { return _realmCharacterCounts; }
+ void HandleQueryRealmName(WorldPackets::Query::QueryRealmName& queryRealmName);
+
// Artifact
void HandleArtifactAddPower(WorldPackets::Artifact::ArtifactAddPower& artifactAddPower);
void HandleArtifactSetAppearance(WorldPackets::Artifact::ArtifactSetAppearance& artifactSetAppearance);
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 08ea6e57195..5ced6e8bfab 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2188,8 +2188,7 @@ void World::SetInitialWorldSettings()
TC_METRIC_EVENT("events", "World initialized", "World initialized in " + std::to_string(startupDuration / 60000) + " minutes " + std::to_string((startupDuration % 60000) / 1000) + " seconds");
- if (uint32 realmId = sConfigMgr->GetIntDefault("RealmID", 0)) // 0 reserved for auth
- sLog->SetRealmId(realmId);
+ sLog->SetRealmId(realm.Id.Realm);
}
void World::ResetTimeDiffRecord()
@@ -2220,9 +2219,8 @@ void World::LoadAutobroadcasts()
m_Autobroadcasts.clear();
- uint32 realmId = sConfigMgr->GetIntDefault("RealmID", 0);
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_AUTOBROADCAST);
- stmt->setInt32(0, realmId);
+ stmt->setInt32(0, realm.Id.Realm);
PreparedQueryResult result = LoginDatabase.Query(stmt);
if (!result)
@@ -3607,5 +3605,5 @@ Realm realm;
uint32 GetVirtualRealmAddress()
{
- return uint32(realm.Id.Region) << 24 | uint32(realm.Id.Site) << 16 | realm.Id.Realm;
+ return realm.Id.GetAddress();
}
diff --git a/src/server/shared/Realm/Realm.cpp b/src/server/shared/Realm/Realm.cpp
index 45e5b445297..2754fa60581 100644
--- a/src/server/shared/Realm/Realm.cpp
+++ b/src/server/shared/Realm/Realm.cpp
@@ -19,6 +19,13 @@
#include "StringFormat.h"
#include <boost/asio/ip/address.hpp>
+void Realm::SetName(std::string name)
+{
+ Name = name;
+ NormalizedName = std::move(name);
+ NormalizedName.erase(std::remove_if(NormalizedName.begin(), NormalizedName.end(), ::isspace), NormalizedName.end());
+}
+
boost::asio::ip::address Realm::GetAddressForClient(boost::asio::ip::address const& clientAddr) const
{
boost::asio::ip::address realmIp;
diff --git a/src/server/shared/Realm/Realm.h b/src/server/shared/Realm/Realm.h
index 21675fe149b..bde0a47c7df 100644
--- a/src/server/shared/Realm/Realm.h
+++ b/src/server/shared/Realm/Realm.h
@@ -83,12 +83,15 @@ struct TC_SHARED_API Realm
std::unique_ptr<boost::asio::ip::address> LocalSubnetMask;
uint16 Port;
std::string Name;
+ std::string NormalizedName;
uint8 Type;
RealmFlags Flags;
uint8 Timezone;
AccountTypes AllowedSecurityLevel;
float PopulationLevel;
+ void SetName(std::string name);
+
boost::asio::ip::address GetAddressForClient(boost::asio::ip::address const& clientAddr) const;
uint32 GetConfigId() const;
diff --git a/src/server/shared/Realm/RealmList.cpp b/src/server/shared/Realm/RealmList.cpp
index 93bb4fc98ff..c579b741d8e 100644
--- a/src/server/shared/Realm/RealmList.cpp
+++ b/src/server/shared/Realm/RealmList.cpp
@@ -71,7 +71,8 @@ void RealmList::UpdateRealm(Battlenet::RealmHandle const& id, uint32 build, std:
realm.Id = id;
realm.Build = build;
- realm.Name = name;
+ if (realm.Name != name)
+ realm.SetName(name);
realm.Type = icon;
realm.Flags = flag;
realm.Timezone = timezone;
diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp
index 08cb7cd58c9..af1311f3b62 100644
--- a/src/server/worldserver/Main.cpp
+++ b/src/server/worldserver/Main.cpp
@@ -522,6 +522,7 @@ bool LoadRealmInfo()
realm.LocalSubnetMask = Trinity::make_unique<boost::asio::ip::address>(*realmListRealm->LocalSubnetMask);
realm.Port = realmListRealm->Port;
realm.Name = realmListRealm->Name;
+ realm.NormalizedName = realmListRealm->NormalizedName;
realm.Type = realmListRealm->Type;
realm.Flags = realmListRealm->Flags;
realm.Timezone = realmListRealm->Timezone;