]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/main.cpp
Fix indentation
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / main.cpp
index 6e4277c082c7a0f66bee7a03a9a2bc5bf1f7e6a3..57fe2090cb8340e95383f7cb9ddd74f6f55c7d9f 100644 (file)
@@ -64,7 +64,7 @@ void ModuleSpanningTree::init()
        ServerInstance->Modules->AddService(commands->map);
 
        delete ServerInstance->PI;
-       ServerInstance->PI = new SpanningTreeProtocolInterface(Utils);
+       ServerInstance->PI = new SpanningTreeProtocolInterface;
        loopCall = false;
 
        // update our local user count
@@ -78,18 +78,21 @@ void ModuleSpanningTree::ShowLinks(TreeServer* Current, User* user, int hops)
        {
                Parent = Current->GetParent()->GetName();
        }
-       for (unsigned int q = 0; q < Current->ChildCount(); q++)
+
+       const TreeServer::ChildServers& children = Current->GetChildren();
+       for (TreeServer::ChildServers::const_iterator i = children.begin(); i != children.end(); ++i)
        {
-               if ((Current->GetChild(q)->Hidden) || ((Utils->HideULines) && (ServerInstance->ULine(Current->GetChild(q)->GetName()))))
+               TreeServer* server = *i;
+               if ((server->Hidden) || ((Utils->HideULines) && (ServerInstance->ULine(server->GetName()))))
                {
                        if (user->IsOper())
                        {
-                                ShowLinks(Current->GetChild(q),user,hops+1);
+                                ShowLinks(server, user, hops+1);
                        }
                }
                else
                {
-                       ShowLinks(Current->GetChild(q),user,hops+1);
+                       ShowLinks(server, user, hops+1);
                }
        }
        /* Don't display the line if its a uline, hide ulines is on, and the user isnt an oper */
@@ -641,7 +644,7 @@ void ModuleSpanningTree::OnPreRehash(User* user, const std::string &parameter)
        {
                parameterlist params;
                params.push_back(parameter);
-               Utils->DoOneToAllButSender(user ? user->uuid : ServerInstance->Config->GetSID(), "REHASH", params, user ? user->server : ServerInstance->Config->ServerName);
+               Utils->DoOneToAllButSender(user ? user->uuid : ServerInstance->Config->GetSID(), "REHASH", params, user ? Utils->BestRouteTo(user->server) : NULL);
        }
 }
 
@@ -685,11 +688,11 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod)
                return;
        ServerInstance->PI->SendMetaData(NULL, "modules", "-" + mod->ModuleSourceFile);
 
-       unsigned int items = Utils->TreeRoot->ChildCount();
-       for(unsigned int x = 0; x < items; x++)
+       // 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)
        {
-               TreeServer* srv = Utils->TreeRoot->GetChild(x);
-               TreeSocket* sock = srv->GetSocket();
+               TreeSocket* sock = (*i)->GetSocket();
                if (sock && sock->GetIOHook() && sock->GetIOHook()->creator == mod)
                {
                        sock->SendError("SSL module unloaded");