]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/main.cpp
Allow Channel::WriteNotice send to other servers and status ranks.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / main.cpp
index 561eed2fb47caf7396dca88eaf9efec944e1b04b..fbc6ad40c8059d88493b747b60e7377867c6ec63 100644 (file)
@@ -25,7 +25,6 @@
 #include "socket.h"
 #include "xline.h"
 #include "iohook.h"
-#include "modules/server.h"
 
 #include "resolvers.h"
 #include "main.h"
@@ -47,6 +46,7 @@ ModuleSpanningTree::ModuleSpanningTree()
        , currmembid(0)
        , broadcasteventprov(this, "event/server-broadcast")
        , linkeventprov(this, "event/server-link")
+       , messageeventprov(this, "event/server-message")
        , synceventprov(this, "event/server-sync")
        , sslapi(this)
        , DNS(this, "DNS")
@@ -486,7 +486,7 @@ void ModuleSpanningTree::OnUserConnect(LocalUser* user)
        for(Extensible::ExtensibleStore::const_iterator i = user->GetExtList().begin(); i != user->GetExtList().end(); i++)
        {
                ExtensionItem* item = i->first;
-               std::string value = item->serialize(FORMAT_NETWORK, user, i->second);
+               std::string value = item->ToNetwork(user, i->second);
                if (!value.empty())
                        ServerInstance->PI->SendMetaData(user, item->name, value);
        }
@@ -689,7 +689,7 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod)
                {
                        TreeServer* server = i->second;
                        if (!server->IsRoot())
-                               FOREACH_MOD_CUSTOM(GetLinkEventProvider(), ServerProtocol::LinkEventListener, OnServerSplit, (server));
+                               FOREACH_MOD_CUSTOM(GetLinkEventProvider(), ServerProtocol::LinkEventListener, OnServerSplit, (server, false));
                }
                return;
        }
@@ -793,6 +793,13 @@ void ModuleSpanningTree::OnMode(User* source, User* u, Channel* c, const Modes::
        }
 }
 
+void ModuleSpanningTree::OnShutdown(const std::string& reason)
+{
+       const TreeServer::ChildServers& children = Utils->TreeRoot->GetChildren();
+       while (!children.empty())
+               children.front()->SQuit(reason, true);
+}
+
 CullResult ModuleSpanningTree::cull()
 {
        if (Utils)
@@ -804,7 +811,7 @@ ModuleSpanningTree::~ModuleSpanningTree()
 {
        ServerInstance->PI = &ServerInstance->DefaultProtocolInterface;
 
-       Server* newsrv = new Server(ServerInstance->Config->ServerName, ServerInstance->Config->ServerDesc);
+       Server* newsrv = new Server(ServerInstance->Config->GetSID(), ServerInstance->Config->ServerName, ServerInstance->Config->ServerDesc);
        SetLocalUsersServer(newsrv);
 
        delete Utils;