diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/ea/charserverhandler.cpp | 2 | ||||
-rw-r--r-- | src/net/ea/loginhandler.cpp | 5 | ||||
-rw-r--r-- | src/net/ea/loginhandler.h | 3 | ||||
-rw-r--r-- | src/net/loginhandler.h | 3 | ||||
-rw-r--r-- | src/net/serverinfo.h | 9 |
5 files changed, 14 insertions, 8 deletions
diff --git a/src/net/ea/charserverhandler.cpp b/src/net/ea/charserverhandler.cpp index d541ce09b..849fe15e1 100644 --- a/src/net/ea/charserverhandler.cpp +++ b/src/net/ea/charserverhandler.cpp @@ -242,7 +242,7 @@ void CharServerHandler::processCharMapInfo(Net::MessageIn &restrict msg, PlayerInfo::setCharId(msg.readInt32()); GameHandler *const gh = static_cast<GameHandler*>(Net::getGameHandler()); gh->setMap(msg.readString(16)); - if (config.getBoolValue("usePersistentIP")) + if (config.getBoolValue("usePersistentIP") || client->getPersistentIp()) { msg.readInt32(); server.hostname = client->getServerName(); diff --git a/src/net/ea/loginhandler.cpp b/src/net/ea/loginhandler.cpp index af86aaf93..d4cf0e59e 100644 --- a/src/net/ea/loginhandler.cpp +++ b/src/net/ea/loginhandler.cpp @@ -75,7 +75,8 @@ void LoginHandler::loginAccount(LoginData *const loginData1) const } } -void LoginHandler::chooseServer(const unsigned int server) const +void LoginHandler::chooseServer(const unsigned int server, + const bool persistentIp) const { if (server >= mWorlds.size() || !mWorlds[server]) return; @@ -83,7 +84,7 @@ void LoginHandler::chooseServer(const unsigned int server) const ServerInfo *const charServer = getCharServer(); if (charServer) { - if (config.getBoolValue("usePersistentIP")) + if (config.getBoolValue("usePersistentIP") || persistentIp) charServer->hostname = client->getServerName(); else charServer->hostname = ipToString(mWorlds[server]->address); diff --git a/src/net/ea/loginhandler.h b/src/net/ea/loginhandler.h index 8619d4c34..d8bffc0be 100644 --- a/src/net/ea/loginhandler.h +++ b/src/net/ea/loginhandler.h @@ -61,7 +61,8 @@ class LoginHandler : public Net::LoginHandler virtual void loginAccount(LoginData *const loginData) const override final; - virtual void chooseServer(const unsigned int server) const override; + virtual void chooseServer(const unsigned int server, + const bool persistentIp) const override; virtual void registerAccount(const LoginData *const loginData) const override final; diff --git a/src/net/loginhandler.h b/src/net/loginhandler.h index caad082ae..b00ffffe2 100644 --- a/src/net/loginhandler.h +++ b/src/net/loginhandler.h @@ -88,7 +88,8 @@ class LoginHandler const std::string &restrict newPassword) const = 0; - virtual void chooseServer(unsigned int server) const = 0; + virtual void chooseServer(unsigned int server, + const bool persistentIp) const = 0; virtual void registerAccount(const LoginData *const loginData) const = 0; diff --git a/src/net/serverinfo.h b/src/net/serverinfo.h index 899400598..b2cd652bb 100644 --- a/src/net/serverinfo.h +++ b/src/net/serverinfo.h @@ -55,8 +55,8 @@ public: std::string supportUrl; uint16_t port; VersionString version; - bool save; + bool persistentIp; ServerInfo() : type(TMWATHENA), @@ -69,7 +69,8 @@ public: supportUrl(), port(6901), version(), - save(false) + save(false), + persistentIp(true) { version.first = 0; } @@ -85,7 +86,8 @@ public: supportUrl(info.supportUrl), port(info.port), version(), - save(info.save) + save(info.save), + persistentIp(info.persistentIp) { version.first = info.version.first; version.second = info.version.second; @@ -110,6 +112,7 @@ public: version.first = 0; version.second.clear(); save = false; + persistentIp = true; } bool operator==(const ServerInfo &other) const |