aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/main.cpp
diff options
context:
space:
mode:
authorGravatar Attila Molnar2014-07-25 12:05:40 +0200
committerGravatar Attila Molnar2014-07-25 12:05:40 +0200
commitf62654a6859998f9d63eb22702c572d5ebcff15c (patch)
treefd38985a6a7f94658c157da9a6f470d718f34eed /src/modules/m_spanningtree/main.cpp
parentUpdate Windows build scripts for the recent build sys changes (diff)
parentRelease v2.0.17 (diff)
Merge insp20
Diffstat (limited to 'src/modules/m_spanningtree/main.cpp')
-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 a17fb203c..ee4c4bdd8 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -694,6 +694,7 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod)
return;
ServerInstance->PI->SendMetaData("modules", "-" + mod->ModuleSourceFile);
+restart:
// Close all connections which use an IO hook provided by this module
const TreeServer::ChildServers& list = Utils->TreeRoot->GetChildren();
for (TreeServer::ChildServers::const_iterator i = list.begin(); i != list.end(); ++i)
@@ -703,6 +704,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;
}
}