diff options
author | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2006-12-29 19:17:10 +0000 |
---|---|---|
committer | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2006-12-29 19:17:10 +0000 |
commit | 6134c13fbbaf2e5516dd924425352416f66ece9b (patch) | |
tree | 5278da4e82ff70c0c61acf5ae5d716e9bd8d1291 | |
parent | 3daa119340a6541ccc751bfba22f851e5c2effbb (diff) | |
download | manaserv-6134c13fbbaf2e5516dd924425352416f66ece9b.tar.gz manaserv-6134c13fbbaf2e5516dd924425352416f66ece9b.tar.bz2 manaserv-6134c13fbbaf2e5516dd924425352416f66ece9b.tar.xz manaserv-6134c13fbbaf2e5516dd924425352416f66ece9b.zip |
Unregister maps on game server disconnection.
-rw-r--r-- | src/account-server/serverhandler.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/account-server/serverhandler.cpp b/src/account-server/serverhandler.cpp index 5300a066..99d872f8 100644 --- a/src/account-server/serverhandler.cpp +++ b/src/account-server/serverhandler.cpp @@ -43,6 +43,19 @@ NetComputer *ServerHandler::computerConnected(ENetPeer *peer) void ServerHandler::computerDisconnected(NetComputer *comp) { + Servers::iterator i = servers.begin(); + while (i != servers.end()) + { + if (i->second.server == comp) + { + LOG_INFO("Unregistering map " << i->first << '.', 0); + servers.erase(i++); + } + else + { + ++i; + } + } delete comp; } @@ -93,9 +106,11 @@ void ServerHandler::processMessage(NetComputer *comp, MessageIn &msg) LOG_INFO("Game server " << address << ':' << port << " wants to register " << (msg.getUnreadLength() / 2) << " maps.", 0); + while (msg.getUnreadLength()) { unsigned id = msg.readShort(); + LOG_INFO("Registering map " << id << '.', 0); if (!servers.insert(std::make_pair(id, s)).second) { LOG_ERROR("Server Handler: map is already registered.", 0); |