diff options
| author | 2016-04-25 13:15:06 +0200 | |
|---|---|---|
| committer | 2016-04-25 13:15:06 +0200 | |
| commit | 657fcc1f6bcb025e7659577b13afdf4d88cce8a5 (patch) | |
| tree | 8f6296731e7cf0272bc278db9d830272b43dab6b /src/modules/m_spanningtree/main.cpp | |
| parent | m_spanningtree Don't try to call the OnServerSplit hook when the module is be... (diff) | |
| download | inspircd++-657fcc1f6bcb025e7659577b13afdf4d88cce8a5.tar.gz inspircd++-657fcc1f6bcb025e7659577b13afdf4d88cce8a5.tar.bz2 inspircd++-657fcc1f6bcb025e7659577b13afdf4d88cce8a5.zip | |
m_spanningtree Call the OnServerSplit hook from the OnUnloadModule() handler on unload
Diffstat (limited to 'src/modules/m_spanningtree/main.cpp')
| -rw-r--r-- | src/modules/m_spanningtree/main.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 5b3f9c0bb..0b9bb65df 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -25,6 +25,7 @@ #include "socket.h" #include "xline.h" #include "iohook.h" +#include "modules/spanningtree.h" #include "resolvers.h" #include "main.h" @@ -613,6 +614,21 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod) return; ServerInstance->PI->SendMetaData("modules", "-" + mod->ModuleSourceFile); + if (mod == this) + { + // We are being unloaded, inform modules about all servers splitting which cannot be done later when the servers are actually disconnected + const server_hash& servers = Utils->serverlist; + for (server_hash::const_iterator i = servers.begin(); i != servers.end(); ++i) + { + TreeServer* server = i->second; + if (!server->IsRoot()) + FOREACH_MOD_CUSTOM(GetEventProvider(), SpanningTreeEventListener, OnServerSplit, (server)); + } + return; + } + + // Some other module is being unloaded. If it provides an IOHook we use, we must close that server connection now. + restart: // Close all connections which use an IO hook provided by this module const TreeServer::ChildServers& list = Utils->TreeRoot->GetChildren(); |
