aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2026-03-04 16:16:26 +0000
committerGravatar Sadie Powell2026-03-04 16:16:26 +0000
commitfe7b48b43e83098d9ae451450819c07b58ee4d5f (patch)
tree97b173bf56c5c39682f58d6c583d0f0daa59c71b /src/modules.cpp
parentClean up ModuleManager somewhat. (diff)
downloadinspircd++-fe7b48b43e83098d9ae451450819c07b58ee4d5f.tar.gz
inspircd++-fe7b48b43e83098d9ae451450819c07b58ee4d5f.tar.bz2
inspircd++-fe7b48b43e83098d9ae451450819c07b58ee4d5f.zip
Only reset the specific type of reference when adding services.
Diffstat (limited to 'src/modules.cpp')
-rw-r--r--src/modules.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/modules.cpp b/src/modules.cpp
index d0f4811e6..89022bd5f 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -36,13 +36,16 @@
static insp::intrusive_list<dynamic_reference_base>* dynrefs = nullptr;
-void dynamic_reference_base::reset_all()
+void dynamic_reference_base::reset_all(const std::string& stype)
{
if (!dynrefs)
return;
for (auto* dynref : *dynrefs)
- dynref->resolve();
+ {
+ if (stype.empty() || dynref->service_type == stype)
+ dynref->resolve();
+ }
}
Module::Module(int mprops, const std::string& mdesc)
@@ -766,7 +769,7 @@ void ModuleManager::AddReferent(const std::string& stype, const std::string& sna
(void*)service, stype, sname);
#endif
this->Services.emplace(std::make_pair(stype, sname), service);
- dynamic_reference_base::reset_all();
+ dynamic_reference_base::reset_all(stype);
}
void ModuleManager::DelReferent(ServiceProvider* service)