diff options
author | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2007-02-04 21:52:17 +0000 |
---|---|---|
committer | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2007-02-04 21:52:17 +0000 |
commit | cade1ba618bd1883e044999a0cbda201f1f76dd4 (patch) | |
tree | 978d8e0d97b0f5b0eec3a77a8d25e54b870ed786 /src/account-server/serverhandler.cpp | |
parent | 9c0421f5926d22a44c978fff683c51748a19e976 (diff) | |
download | manaserv-cade1ba618bd1883e044999a0cbda201f1f76dd4.tar.gz manaserv-cade1ba618bd1883e044999a0cbda201f1f76dd4.tar.bz2 manaserv-cade1ba618bd1883e044999a0cbda201f1f76dd4.tar.xz manaserv-cade1ba618bd1883e044999a0cbda201f1f76dd4.zip |
Added support for switching character by reconnecting to the account server and
fixed the issue where a client is not logged in after registering (patch by
Rogier Polak).
Diffstat (limited to 'src/account-server/serverhandler.cpp')
-rw-r--r-- | src/account-server/serverhandler.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/account-server/serverhandler.cpp b/src/account-server/serverhandler.cpp index 2340d581..e4ec218f 100644 --- a/src/account-server/serverhandler.cpp +++ b/src/account-server/serverhandler.cpp @@ -31,6 +31,9 @@ #include "net/netcomputer.hpp" #include "utils/logger.h" +extern void registerAccountReconnect(int accountID, + const std::string &magic_token); + bool ServerHandler::startListen(enet_uint16 port) { LOG_INFO("Game server handler started:"); @@ -91,6 +94,7 @@ void ServerHandler::processMessage(NetComputer *comp, MessageIn &msg) { case GAMSG_REGISTER: { + LOG_DEBUG("GAMSG_REGISTER"); // TODO: check the credentials of the game server std::string address = msg.readString(); int port = msg.readShort(); @@ -118,6 +122,7 @@ void ServerHandler::processMessage(NetComputer *comp, MessageIn &msg) case GAMSG_PLAYER_DATA: { + LOG_DEBUG("GAMSG_PLAYER_DATA"); int id = msg.readLong(); Storage &store = Storage::instance("tmw"); PlayerPtr ptr = store.getCharacter(id); @@ -135,6 +140,7 @@ void ServerHandler::processMessage(NetComputer *comp, MessageIn &msg) case GAMSG_REDIRECT: { + LOG_DEBUG("GAMSG_REDIRECT"); int id = msg.readLong(); std::string magic_token(32, ' '); for (int i = 0; i < 32; ++i) @@ -162,8 +168,23 @@ void ServerHandler::processMessage(NetComputer *comp, MessageIn &msg) } } break; + case GAMSG_PLAYER_RECONNECT: + { + LOG_DEBUG("GAMSG_PLAYER_RECONNECT"); + int characterID = msg.readLong(); + std::string magic_token = msg.readString(32); + + Storage &store = Storage::instance("tmw"); + PlayerPtr ptr = store.getCharacter(characterID); + + int accountID = ptr->getAccountID(); + registerAccountReconnect(accountID, magic_token); + + } break; + default: - LOG_WARN("Invalid message type: " << msg.getId()); + LOG_WARN("ServerHandler::processMessage, Invalid message type: " + << msg.getId()); result.writeShort(XXMSG_INVALID); break; } |