summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/modules/m_spanningtree/treeserver.cpp4
-rw-r--r--src/users.cpp2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp
index 9b92ba988..009478635 100644
--- a/src/modules/m_spanningtree/treeserver.cpp
+++ b/src/modules/m_spanningtree/treeserver.cpp
@@ -358,6 +358,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());
}
diff --git a/src/users.cpp b/src/users.cpp
index 8d22d166c..aed969c7b 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -340,7 +340,7 @@ CullResult FakeUser::cull()
// Fake users don't quit, they just get culled.
quitting = true;
// Fake users are not inserted into UserManager::clientlist, they're only in the uuidlist
- ServerInstance->Users->uuidlist.erase(uuid);
+ // and they are removed from there by the linking mod when the server splits
return User::cull();
}