summaryrefslogtreecommitdiff
path: root/src/account-server/serverhandler.cpp
diff options
context:
space:
mode:
authorGuillaume Melquiond <guillaume.melquiond@gmail.com>2006-12-29 19:17:10 +0000
committerGuillaume Melquiond <guillaume.melquiond@gmail.com>2006-12-29 19:17:10 +0000
commit6134c13fbbaf2e5516dd924425352416f66ece9b (patch)
tree5278da4e82ff70c0c61acf5ae5d716e9bd8d1291 /src/account-server/serverhandler.cpp
parent3daa119340a6541ccc751bfba22f851e5c2effbb (diff)
downloadmanaserv-6134c13fbbaf2e5516dd924425352416f66ece9b.tar.gz
manaserv-6134c13fbbaf2e5516dd924425352416f66ece9b.tar.bz2
manaserv-6134c13fbbaf2e5516dd924425352416f66ece9b.tar.xz
manaserv-6134c13fbbaf2e5516dd924425352416f66ece9b.zip
Unregister maps on game server disconnection.
Diffstat (limited to 'src/account-server/serverhandler.cpp')
-rw-r--r--src/account-server/serverhandler.cpp15
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);