diff options
| author | 2026-03-04 16:16:26 +0000 | |
|---|---|---|
| committer | 2026-03-04 16:16:26 +0000 | |
| commit | fe7b48b43e83098d9ae451450819c07b58ee4d5f (patch) | |
| tree | 97b173bf56c5c39682f58d6c583d0f0daa59c71b /src/modules.cpp | |
| parent | Clean up ModuleManager somewhat. (diff) | |
| download | inspircd++-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.cpp | 9 |
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) |
