]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/treeserver.cpp
Merge branch 'master+stfjoinforward'
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / treeserver.cpp
index 9b92ba988099f5e87ee3bdc87f9c95a882ee7420..98d7c87545b6a3229a81f051f8b1e24d1e0fc475 100644 (file)
@@ -322,13 +322,7 @@ void TreeServer::AddChild(TreeServer* Child)
 
 bool TreeServer::DelChild(TreeServer* Child)
 {
-       std::vector<TreeServer*>::iterator it = std::find(Children.begin(), Children.end(), Child);
-       if (it != Children.end())
-       {
-               Children.erase(it);
-               return true;
-       }
-       return false;
+       return stdalgo::erase(Children, Child);
 }
 
 CullResult TreeServer::cull()
@@ -358,6 +352,10 @@ TreeServer::~TreeServer()
 
 void TreeServer::RemoveHash()
 {
+       // XXX: Erase server from UserManager::uuidlist now, to allow sid reuse in the current main loop
+       // iteration, before the cull list is applied
+       ServerInstance->Users->uuidlist.erase(sid);
+
        Utils->sidlist.erase(sid);
        Utils->serverlist.erase(GetName());
 }