diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-12-10 22:17:51 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-12-10 22:17:51 +0000 |
commit | 540fee57bf71abccaba38c0297b80f8001780c1d (patch) | |
tree | 0a02c41f92100925e5f6a3db709372322389517e /src/modules | |
parent | 5c0c0ec057e1f1bc9dd837c1654927b5b534e5c0 (diff) |
Add InspIRCd::UseInterface and InspIRCd::DoneWithInterface, and also InspIRCd::GetInterfaceUseCount().
These can be used for one module to lock other modules in memory that it depends on, this way they can
enforce an unload order so that you cant (for example) unload m_ssl_gnutls.so whilst m_spanningtree.so
is using it for ssl server to server sessions (in this case, youd have to unload spanningtree first,
THEN ssl_gnutls, to satisfy the dependencies and unload orders)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5924 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/m_cloaking.cpp | 5 | ||||
-rw-r--r-- | src/modules/m_oper_hash.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_spanningtree.cpp | 4 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/modules/m_cloaking.cpp b/src/modules/m_cloaking.cpp index ffa189007..a32f7348d 100644 --- a/src/modules/m_cloaking.cpp +++ b/src/modules/m_cloaking.cpp @@ -230,7 +230,9 @@ class ModuleCloaking : public Module ModuleCloaking(InspIRCd* Me) : Module::Module(Me) { - /* Attempt to locate the Hash service provider, bail if we can't find it */ + ServerInstance->UseInterface("HashRequest"); + + /* Attempt to locate the md5 service provider, bail if we can't find it */ HashModule = ServerInstance->FindModule("m_md5.so"); if (!HashModule) throw ModuleException("Can't find m_md5.so. Please load m_md5.so before m_cloaking.so."); @@ -248,6 +250,7 @@ class ModuleCloaking : public Module { ServerInstance->Modes->DelMode(cu); DELETE(cu); + ServerInstance->DoneWithInterface("HashRequest"); } virtual Version GetVersion() diff --git a/src/modules/m_oper_hash.cpp b/src/modules/m_oper_hash.cpp index b9e246c2b..61a43b1e1 100644 --- a/src/modules/m_oper_hash.cpp +++ b/src/modules/m_oper_hash.cpp @@ -91,6 +91,8 @@ class ModuleOperHash : public Module Conf = NULL; OnRehash(""); + ServerInstance->UseInterface("HashRequest"); + /* Find all modules which implement the interface 'HashRequest' */ modulelist* ml = ServerInstance->FindInterface("HashRequest"); @@ -121,6 +123,7 @@ class ModuleOperHash : public Module virtual ~ModuleOperHash() { + ServerInstance->DoneWithInterface("HashRequest"); } void Implements(char* List) diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp index c0d2d7428..ef7e17820 100644 --- a/src/modules/m_spanningtree.cpp +++ b/src/modules/m_spanningtree.cpp @@ -4188,6 +4188,8 @@ class ModuleSpanningTree : public Module ModuleSpanningTree(InspIRCd* Me) : Module::Module(Me), max_local(0), max_global(0) { + ServerInstance->UseInterface("InspSocketHook"); + Utils = new SpanningTreeUtilities(Me, this); command_rconnect = new cmd_rconnect(ServerInstance, this, Utils); @@ -5402,6 +5404,8 @@ class ModuleSpanningTree : public Module delete Utils; if (SyncTimer) ServerInstance->Timers->DelTimer(SyncTimer); + + ServerInstance->DoneWithInterface("InspSocketHook"); } virtual Version GetVersion() |