Skip to content

Commit

Permalink
Remove VF_STATIC from spanningtree and make a clever destructor to cl…
Browse files Browse the repository at this point in the history
…ose and free all its open sockets. In theory this will make insp split from everything neatly when you unload spanningtree.

git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5418 e03df62e-2008-0410-955e-edbf42e46eb7
  • Loading branch information
braindigitalis committed Oct 5, 2006
1 parent 38a6bca commit 17ba341
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion src/modules/m_spanningtree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 17ba341

Please sign in to comment.