diff options
-rw-r--r-- | src/server/bnetserver/REST/LoginRESTService.cpp | 4 | ||||
-rw-r--r-- | src/server/shared/Realm/Realm.cpp | 19 | ||||
-rw-r--r-- | src/server/shared/Realm/Realm.h | 6 | ||||
-rw-r--r-- | src/server/shared/Realm/RealmList.cpp | 7 | ||||
-rw-r--r-- | src/server/shared/Realm/RealmList.h | 3 | ||||
-rw-r--r-- | src/server/worldserver/Main.cpp | 13 |
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; } |