diff options
| author | Shauren <shauren.trinity@gmail.com> | 2023-08-03 11:18:11 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2023-08-03 11:18:11 +0200 |
| commit | cc6dba1376905456062d1ade8adcbaed4f8f484e (patch) | |
| tree | ee6b969f3ea69f3f403cc51d155dc15964b7b9d1 /src/server/shared | |
| parent | 8594fcfe8a0085a087bce510e3b4cb14f632434f (diff) | |
Core/Realms: Minor refactor to realm address storage (remove LocalSubnetMask as it is now unused, db field kept for table structure compatibility with 3.3.5 branch)
Diffstat (limited to 'src/server/shared')
| -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 |
4 files changed, 11 insertions, 24 deletions
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 { |
