From: Attila Molnar Date: Mon, 28 Jul 2014 12:31:57 +0000 (+0200) Subject: m_spanningtree Remove split servers from the hash maps in TreeServer::SQuitInternal() X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=001e9c1372a1c6fc2877f9d6607cf662f09228df;p=user%2Fhenk%2Fcode%2Finspircd.git m_spanningtree Remove split servers from the hash maps in TreeServer::SQuitInternal() --- diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp index f493f6d20..5a2d4f886 100644 --- a/src/modules/m_spanningtree/treeserver.cpp +++ b/src/modules/m_spanningtree/treeserver.cpp @@ -213,6 +213,7 @@ void TreeServer::SQuitInternal(const std::string& reason, int& num_lost_servers, num_lost_servers++; num_lost_users += QuitUsers(reason); + RemoveHash(); } int TreeServer::QuitUsers(const std::string &reason) @@ -362,7 +363,10 @@ TreeServer::~TreeServer() /* We'd better tidy up after ourselves, eh? */ if (!IsRoot()) delete ServerUser; +} +void TreeServer::RemoveHash() +{ Utils->sidlist.erase(sid); Utils->serverlist.erase(GetName()); } diff --git a/src/modules/m_spanningtree/treeserver.h b/src/modules/m_spanningtree/treeserver.h index 2e6c47bf4..88b43d182 100644 --- a/src/modules/m_spanningtree/treeserver.h +++ b/src/modules/m_spanningtree/treeserver.h @@ -69,6 +69,10 @@ class TreeServer : public Server */ void SQuitInternal(const std::string& reason, int& num_lost_servers, int& num_lost_users); + /** Remove the reference to this server from the hash maps + */ + void RemoveHash(); + public: typedef std::vector ChildServers; FakeUser* const ServerUser; /* User representing this server */ @@ -237,9 +241,7 @@ class TreeServer : public Server CullResult cull(); - /** Destructor - * Removes the reference to this object from the - * hash maps. + /** Destructor, deletes ServerUser unless IsRoot() */ ~TreeServer();