summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2014-06-06 01:46:21 +0200
committerAttila Molnar <attilamolnar@hush.com>2014-06-06 01:46:21 +0200
commit0e118bb789b8830af06842d715d5206554b6e0d9 (patch)
tree1f98fe7d6966dce57b2117343cd58d92af70dd6a /src/modules
parent16a5b3545b007fb350e6c94d9203740e546ffe81 (diff)
m_spanningtree Fix cleanup of connections when unloading a module that provides an IOHook
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_spanningtree/main.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index d702ab4a2..e7ff3789b 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -806,6 +806,7 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod)
{
ServerInstance->PI->SendMetaData(NULL, "modules", "-" + mod->ModuleSourceFile);
+restart:
unsigned int items = Utils->TreeRoot->ChildCount();
for(unsigned int x = 0; x < items; x++)
{
@@ -815,6 +816,8 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod)
{
sock->SendError("SSL module unloaded");
sock->Close();
+ // XXX: The list we're iterating is modified by TreeSocket::Squit() which is called by Close()
+ goto restart;
}
}