aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-08-03 11:18:11 +0200
committerShauren <shauren.trinity@gmail.com>2023-08-03 11:18:11 +0200
commitcc6dba1376905456062d1ade8adcbaed4f8f484e (patch)
treeee6b969f3ea69f3f403cc51d155dc15964b7b9d1 /src/server/shared
parent8594fcfe8a0085a087bce510e3b4cb14f632434f (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.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
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
{