summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_spanningtree.cpp')
-rw-r--r--src/modules/m_spanningtree.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp
index 4138d3827..0a04708e1 100644
--- a/src/modules/m_spanningtree.cpp
+++ b/src/modules/m_spanningtree.cpp
@@ -4997,11 +4997,33 @@ class ModuleSpanningTree : public Module
virtual ~ModuleSpanningTree()
{
+ ServerInstance->Log(DEBUG,"Performing unload of spanningtree!");
+ ServerInstance->Log(DEBUG,"Freeing bindings...");
+ for (unsigned int i = 0; i < Bindings.size(); i++)
+ {
+ ServerInstance->Log(DEBUG,"Freeing binding %d of %d",i, Bindings.size());
+ ServerInstance->SE->DelFd(Bindings[i]);
+ Bindings[i]->Close();
+ DELETE(Bindings[i]);
+ }
+ ServerInstance->Log(DEBUG,"Freeing connected servers...");
+ while (TreeRoot->ChildCount())
+ {
+ TreeServer* child_server = TreeRoot->GetChild(0);
+ ServerInstance->Log(DEBUG,"Freeing connected server %s", child_server->GetName().c_str());
+ if (child_server)
+ {
+ TreeSocket* sock = child_server->GetSocket();
+ ServerInstance->SE->DelFd(sock);
+ sock->Close();
+ DELETE(sock);
+ }
+ }
}
virtual Version GetVersion()
{
- return Version(1,1,0,2,VF_STATIC|VF_VENDOR,API_VERSION);
+ return Version(1,1,0,2,VF_VENDOR,API_VERSION);
}
void Implements(char* List)