Core/Authserver: Always send realm address to clients in dotted ip format.
This commit is contained in:
1 parent
e9ede29592
commit
02aae2858b
2 files changed
+11
-10
No files matched your search
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user