aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/bnetserver/REST/LoginRESTService.cpp4
-rw-r--r--src/server/shared/Realm/Realm.cpp19
-rw-r--r--src/server/shared/Realm/Realm.h6
-rw-r--r--src/server/shared/Realm/RealmList.cpp7
-rw-r--r--src/server/shared/Realm/RealmList.h3
-rw-r--r--src/server/worldserver/Main.cpp13
6 files changed, 14 insertions, 38 deletions
diff --git a/src/server/bnetserver/REST/LoginRESTService.cpp b/src/server/bnetserver/REST/LoginRESTService.cpp
index 6cfdcb1324f..0aa8ac8fb0d 100644
--- a/src/server/bnetserver/REST/LoginRESTService.cpp
+++ b/src/server/bnetserver/REST/LoginRESTService.cpp
@@ -140,9 +140,9 @@ std::string const& LoginRESTService::GetHostnameForClient(boost::asio::ip::addre
return _hostnames[*addressIndex];
if (address.is_loopback())
- return _hostnames[0];
+ return _hostnames[1];
- return _hostnames[1];
+ return _hostnames[0];
}
void LoginRESTService::Run()
diff --git a/src/server/shared/Realm/Realm.cpp b/src/server/shared/Realm/Realm.cpp
index 87b7114111d..42ac0c3f64b 100644
--- a/src/server/shared/Realm/Realm.cpp
+++ b/src/server/shared/Realm/Realm.cpp
@@ -31,24 +31,13 @@ void Realm::SetName(std::string name)
boost::asio::ip::address Realm::GetAddressForClient(boost::asio::ip::address const& clientAddr) const
{
- std::array<boost::asio::ip::address, 2> addresses = std::array{ *ExternalAddress, * LocalAddress };
- if (auto addressIndex = Trinity::Net::SelectAddressForClient(clientAddr, addresses))
- {
- switch (*addressIndex)
- {
- case 0:
- return *ExternalAddress;
- case 1:
- return *LocalAddress;
- default:
- break;
- }
- }
+ if (auto addressIndex = Trinity::Net::SelectAddressForClient(clientAddr, Addresses))
+ return Addresses[*addressIndex];
if (clientAddr.is_loopback())
- return *LocalAddress;
+ return Addresses[1];
- return *ExternalAddress;
+ return Addresses[0];
}
uint32 Realm::GetConfigId() const
diff --git a/src/server/shared/Realm/Realm.h b/src/server/shared/Realm/Realm.h
index 21627887b31..a51f4550051 100644
--- a/src/server/shared/Realm/Realm.h
+++ b/src/server/shared/Realm/Realm.h
@@ -20,7 +20,7 @@
#include "Common.h"
#include "AsioHacksFwd.h"
-#include <memory>
+#include <vector>
enum RealmFlags
{
@@ -79,9 +79,7 @@ struct TC_SHARED_API Realm
{
Battlenet::RealmHandle Id;
uint32 Build;
- std::unique_ptr<boost::asio::ip::address> ExternalAddress;
- std::unique_ptr<boost::asio::ip::address> LocalAddress;
- std::unique_ptr<boost::asio::ip::address> LocalSubnetMask;
+ std::vector<boost::asio::ip::address> Addresses;
uint16 Port;
std::string Name;
std::string NormalizedName;
diff --git a/src/server/shared/Realm/RealmList.cpp b/src/server/shared/Realm/RealmList.cpp
index ff152276c12..3d72418c10b 100644
--- a/src/server/shared/Realm/RealmList.cpp
+++ b/src/server/shared/Realm/RealmList.cpp
@@ -107,10 +107,9 @@ void RealmList::UpdateRealm(Realm& realm, Battlenet::RealmHandle const& id, uint
realm.Timezone = timezone;
realm.AllowedSecurityLevel = allowedSecurityLevel;
realm.PopulationLevel = population;
- if (!realm.ExternalAddress || *realm.ExternalAddress != address)
- realm.ExternalAddress = std::make_unique<boost::asio::ip::address>(std::move(address));
- if (!realm.LocalAddress || *realm.LocalAddress != localAddr)
- realm.LocalAddress = std::make_unique<boost::asio::ip::address>(std::move(localAddr));
+ realm.Addresses.resize(2);
+ realm.Addresses[0] = std::move(address);
+ realm.Addresses[1] = std::move(localAddr);
realm.Port = port;
}
diff --git a/src/server/shared/Realm/RealmList.h b/src/server/shared/Realm/RealmList.h
index 3032b9975cb..973dd913d7a 100644
--- a/src/server/shared/Realm/RealmList.h
+++ b/src/server/shared/Realm/RealmList.h
@@ -22,9 +22,10 @@
#include "Realm.h"
#include <array>
#include <map>
+#include <memory>
#include <shared_mutex>
-#include <vector>
#include <unordered_set>
+#include <vector>
struct RealmBuildInfo
{
diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp
index 013b4b0f977..3c3184f4ddc 100644
--- a/src/server/worldserver/Main.cpp
+++ b/src/server/worldserver/Main.cpp
@@ -617,18 +617,7 @@ bool LoadRealmInfo()
{
if (Realm const* realmListRealm = sRealmList->GetRealm(realm.Id))
{
- realm.Id = realmListRealm->Id;
- realm.Build = realmListRealm->Build;
- realm.ExternalAddress = std::make_unique<boost::asio::ip::address>(*realmListRealm->ExternalAddress);
- realm.LocalAddress = std::make_unique<boost::asio::ip::address>(*realmListRealm->LocalAddress);
- realm.Port = realmListRealm->Port;
- realm.Name = realmListRealm->Name;
- realm.NormalizedName = realmListRealm->NormalizedName;
- realm.Type = realmListRealm->Type;
- realm.Flags = realmListRealm->Flags;
- realm.Timezone = realmListRealm->Timezone;
- realm.AllowedSecurityLevel = realmListRealm->AllowedSecurityLevel;
- realm.PopulationLevel = realmListRealm->PopulationLevel;
+ realm = *realmListRealm;
return true;
}