diff options
author | Shauren <shauren.trinity@gmail.com> | 2012-11-27 11:30:48 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2012-11-27 11:30:48 +0100 |
commit | 02aae2858b477c6ed98497053625f270000a72c6 (patch) | |
tree | b596975f8b6510c1307352456b54560cfc6dbed1 /src | |
parent | e9ede295929d77bce7cbacb1e56a361c4a5311a4 (diff) |
Core/Authserver: Always send realm address to clients in dotted ip format.
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/authserver/Realms/RealmList.cpp | 16 | ||||
-rwxr-xr-x | src/server/authserver/Realms/RealmList.h | 5 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/server/authserver/Realms/RealmList.cpp b/src/server/authserver/Realms/RealmList.cpp index 453efd5bf72..79df2b15605 100755 --- a/src/server/authserver/Realms/RealmList.cpp +++ b/src/server/authserver/Realms/RealmList.cpp @@ -31,7 +31,7 @@ void RealmList::Initialize(uint32 updateInterval) UpdateRealms(true); } -void RealmList::UpdateRealm(uint32 ID, const std::string& name, const std::string& address, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, uint32 build) +void RealmList::UpdateRealm(uint32 ID, const std::string& name, ACE_INET_Addr const& address, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, uint32 build) { // Create new if not exist or update existed Realm& realm = m_realms[name]; @@ -45,9 +45,7 @@ void RealmList::UpdateRealm(uint32 ID, const std::string& name, const std::strin realm.populationLevel = popu; // Append port to IP address. - std::ostringstream ss; - ss << address << ':' << port; - realm.address = ss.str(); + address.addr_to_string(realm.address, ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 16); realm.gamebuild = build; } @@ -80,8 +78,8 @@ void RealmList::UpdateRealms(bool init) { Field* fields = result->Fetch(); uint32 realmId = fields[0].GetUInt32(); - const std::string& name = fields[1].GetString(); - const std::string& address = fields[2].GetString(); + std::string name = fields[1].GetString(); + std::string address = fields[2].GetString(); uint16 port = fields[3].GetUInt16(); uint8 icon = fields[4].GetUInt8(); RealmFlags flag = RealmFlags(fields[5].GetUInt8()); @@ -90,10 +88,12 @@ void RealmList::UpdateRealms(bool init) float pop = fields[8].GetFloat(); uint32 build = fields[9].GetUInt32(); - UpdateRealm(realmId, name, address, port, icon, flag, timezone, (allowedSecurityLevel <= SEC_ADMINISTRATOR ? AccountTypes(allowedSecurityLevel) : SEC_ADMINISTRATOR), pop, build); + ACE_INET_Addr addr(port, address.c_str(), AF_INET); + + UpdateRealm(realmId, name, addr, icon, flag, timezone, (allowedSecurityLevel <= SEC_ADMINISTRATOR ? AccountTypes(allowedSecurityLevel) : SEC_ADMINISTRATOR), pop, build); if (init) - sLog->outInfo(LOG_FILTER_AUTHSERVER, "Added realm \"%s\".", fields[1].GetCString()); + sLog->outInfo(LOG_FILTER_AUTHSERVER, "Added realm \"%s\" at %s.", name.c_str(), m_realms[name].address); } while (result->NextRow()); } diff --git a/src/server/authserver/Realms/RealmList.h b/src/server/authserver/Realms/RealmList.h index c8407b0fea1..52482897ea4 100755 --- a/src/server/authserver/Realms/RealmList.h +++ b/src/server/authserver/Realms/RealmList.h @@ -21,6 +21,7 @@ #include <ace/Singleton.h> #include <ace/Null_Mutex.h> +#include <ace/INET_Addr.h> #include "Common.h" enum RealmFlags @@ -39,7 +40,7 @@ enum RealmFlags // Storage object for a realm struct Realm { - std::string address; + char address[ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 16]; std::string name; uint8 icon; RealmFlags flag; @@ -71,7 +72,7 @@ public: private: void UpdateRealms(bool init=false); - void UpdateRealm(uint32 ID, const std::string& name, const std::string& address, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, uint32 build); + void UpdateRealm(uint32 ID, const std::string& name, ACE_INET_Addr const& address, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, uint32 build); RealmMap m_realms; uint32 m_UpdateInterval; |