]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Remove VF_STATIC from spanningtree and make a clever destructor to close and free...
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 5 Oct 2006 11:19:35 +0000 (11:19 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 5 Oct 2006 11:19:35 +0000 (11:19 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5418 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/m_spanningtree.cpp

index 4138d382705254de40544eabe843ca7a26e937cd..0a04708e1e1be56aab8158eff3643942ae38ef05 100644 (file)
@@ -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)