summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-11-10 22:02:37 +0300
committerAndrei Karas <akaras@inbox.ru>2014-11-10 22:02:37 +0300
commit4247e05ae8ee9e14323629701c3a11e5c2fac674 (patch)
treecadc54d611b88fa17b4530a4a530965a7817d47a /src
parentec0159f464cda17f131204a38caa0c5c584fe255 (diff)
downloadmv-4247e05ae8ee9e14323629701c3a11e5c2fac674.tar.gz
mv-4247e05ae8ee9e14323629701c3a11e5c2fac674.tar.bz2
mv-4247e05ae8ee9e14323629701c3a11e5c2fac674.tar.xz
mv-4247e05ae8ee9e14323629701c3a11e5c2fac674.zip
eathnea; add support for update hosts.
Diffstat (limited to 'src')
-rw-r--r--src/net/ea/loginhandler.cpp23
-rw-r--r--src/net/ea/loginhandler.h2
-rw-r--r--src/net/eathena/loginhandler.cpp5
-rw-r--r--src/net/eathena/network.h2
-rw-r--r--src/net/eathena/protocol.h2
-rw-r--r--src/net/tmwa/loginhandler.cpp23
-rw-r--r--src/net/tmwa/loginhandler.h2
7 files changed, 33 insertions, 26 deletions
diff --git a/src/net/ea/loginhandler.cpp b/src/net/ea/loginhandler.cpp
index 11fe197c2..8b2ec1ed1 100644
--- a/src/net/ea/loginhandler.cpp
+++ b/src/net/ea/loginhandler.cpp
@@ -323,6 +323,29 @@ void LoginHandler::loginOrRegister(LoginData *const data) const
serverConfig.setValue("remember", remember);
}
+void LoginHandler::processUpdateHost2(Net::MessageIn &msg)
+{
+ const int len = msg.readInt16("len") - 4;
+ const std::string updateHost = msg.readString(len, "host");
+
+ splitToStringVector(loginData.updateHosts, updateHost, '|');
+ FOR_EACH (StringVectIter, it, loginData.updateHosts)
+ {
+ if (!checkPath(*it))
+ {
+ logger->log1("Warning: incorrect update server name");
+ loginData.updateHosts.clear();
+ break;
+ }
+ }
+
+ logger->log("Received update hosts \"%s\" from login server.",
+ updateHost.c_str());
+
+ if (client->getState() == STATE_PRE_LOGIN)
+ client->setState(STATE_LOGIN);
+}
+
void LoginHandler::logout() const
{
}
diff --git a/src/net/ea/loginhandler.h b/src/net/ea/loginhandler.h
index 845e11f50..93fe3fb2d 100644
--- a/src/net/ea/loginhandler.h
+++ b/src/net/ea/loginhandler.h
@@ -95,6 +95,8 @@ class LoginHandler notfinal : public Net::LoginHandler
static void processLoginError(Net::MessageIn &msg);
+ static void processUpdateHost2(Net::MessageIn &msg);
+
void loginOrRegister(LoginData *const data) const override final;
protected:
diff --git a/src/net/eathena/loginhandler.cpp b/src/net/eathena/loginhandler.cpp
index 3332091d1..c36b6a1d1 100644
--- a/src/net/eathena/loginhandler.cpp
+++ b/src/net/eathena/loginhandler.cpp
@@ -55,6 +55,7 @@ LoginHandler::LoginHandler() :
SMSG_LOGIN_ERROR2,
SMSG_CHAR_PASSWORD_RESPONSE,
SMSG_SERVER_VERSION_RESPONSE,
+ SMSG_UPDATE_HOST,
0
};
handledMessages = _messages;
@@ -89,6 +90,10 @@ void LoginHandler::handleMessage(Net::MessageIn &msg)
processServerVersion(msg);
break;
+ case SMSG_UPDATE_HOST:
+ processUpdateHost(msg);
+ break;
+
default:
break;
}
diff --git a/src/net/eathena/network.h b/src/net/eathena/network.h
index fae4f06d5..81e2131e0 100644
--- a/src/net/eathena/network.h
+++ b/src/net/eathena/network.h
@@ -29,7 +29,7 @@
* Protocol version, reported to the eAthena char and mapserver who can adjust
* the protocol accordingly.
*/
-#define CLIENT_PROTOCOL_VERSION 1
+#define CLIENT_PROTOCOL_VERSION 2
namespace EAthena
{
diff --git a/src/net/eathena/protocol.h b/src/net/eathena/protocol.h
index 4645389ff..7a83d5c84 100644
--- a/src/net/eathena/protocol.h
+++ b/src/net/eathena/protocol.h
@@ -306,6 +306,8 @@
#define SMSG_ELEMENTAL_UPDATE_STATUS 0x081e
#define SMSG_ELEMENTAL_INFO 0x081d
+#define SMSG_UPDATE_HOST 0x0063
+
/**********************************
* Packets from client to server *
**********************************/
diff --git a/src/net/tmwa/loginhandler.cpp b/src/net/tmwa/loginhandler.cpp
index 42ea0101b..ee0381475 100644
--- a/src/net/tmwa/loginhandler.cpp
+++ b/src/net/tmwa/loginhandler.cpp
@@ -242,29 +242,6 @@ void LoginHandler::processServerVersion(Net::MessageIn &msg)
mVersionResponse = true;
}
-void LoginHandler::processUpdateHost2(Net::MessageIn &msg)
-{
- const int len = msg.readInt16("len") - 4;
- const std::string updateHost = msg.readString(len, "host");
-
- splitToStringVector(loginData.updateHosts, updateHost, '|');
- FOR_EACH (StringVectIter, it, loginData.updateHosts)
- {
- if (!checkPath(*it))
- {
- logger->log1("Warning: incorrect update server name");
- loginData.updateHosts.clear();
- break;
- }
- }
-
- logger->log("Received update hosts \"%s\" from login server.",
- updateHost.c_str());
-
- if (client->getState() == STATE_PRE_LOGIN)
- client->setState(STATE_LOGIN);
-}
-
int LoginHandler::supportedOptionalActions() const
{
return serverFeatures->haveEmailOnRegister()
diff --git a/src/net/tmwa/loginhandler.h b/src/net/tmwa/loginhandler.h
index 03f2c22b4..f6565d3e3 100644
--- a/src/net/tmwa/loginhandler.h
+++ b/src/net/tmwa/loginhandler.h
@@ -67,8 +67,6 @@ class LoginHandler final : public MessageHandler, public Ea::LoginHandler
static void requestUpdateHosts();
- static void processUpdateHost2(Net::MessageIn &msg);
-
private:
void sendLoginRegister(const std::string &restrict username,
const std::string &restrict password,