aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_spanningtree/utils.cpp')
-rw-r--r--src/modules/m_spanningtree/utils.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index 729f6d4ee..fc5356c66 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -157,11 +157,11 @@ SpanningTreeUtilities::SpanningTreeUtilities(ModuleSpanningTree* C) : Creator(C)
this->ReadConfiguration(true);
}
-SpanningTreeUtilities::~SpanningTreeUtilities()
+void SpanningTreeUtilities::cull()
{
for (unsigned int i = 0; i < Bindings.size(); i++)
{
- delete Bindings[i];
+ Bindings[i]->cull();
}
while (TreeRoot->ChildCount())
@@ -170,13 +170,21 @@ SpanningTreeUtilities::~SpanningTreeUtilities()
if (child_server)
{
TreeSocket* sock = child_server->GetSocket();
- ServerInstance->SE->DelFd(sock);
sock->Close();
}
}
-
- // This avoids a collision on reload
+
ServerUser->uuid = TreeRoot->GetID();
+ ServerUser->cull();
+}
+
+SpanningTreeUtilities::~SpanningTreeUtilities()
+{
+ for (unsigned int i = 0; i < Bindings.size(); i++)
+ {
+ delete Bindings[i];
+ }
+
delete TreeRoot;
delete ServerUser;
}