diff options
| author | 2020-12-04 18:18:07 +0000 | |
|---|---|---|
| committer | 2020-12-04 18:44:40 +0000 | |
| commit | 3ab889537fb4c7b5b3507562563eec8211d0cc58 (patch) | |
| tree | 254ba171bfe3c8d0ebd4826cc2d51c7befbd6fc2 /src/modules.cpp | |
| parent | Move ban checking to core_channel. (diff) | |
| parent | Improve the logging of service adding/deleting. (diff) | |
Merge branch 'insp3' into master.
Diffstat (limited to 'src/modules.cpp')
| -rw-r--r-- | src/modules.cpp | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/modules.cpp b/src/modules.cpp index 3a36d82ad..9ccbf95f2 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -166,6 +166,26 @@ void ServiceProvider::DisableAutoRegister() stdalgo::erase(*ServerInstance->Modules.NewServices, this); } +const char* ServiceProvider::GetTypeString() const +{ + switch (service) + { + case SERVICE_COMMAND: + return "command"; + case SERVICE_MODE: + return "mode"; + case SERVICE_METADATA: + return "metadata"; + case SERVICE_IOHOOK: + return "iohook"; + case SERVICE_DATA: + return "data service"; + case SERVICE_CUSTOM: + return "module service"; + } + return "unknown service"; +} + bool ModuleManager::Attach(Implementation i, Module* mod) { if (stdalgo::isin(EventHandlers[i], mod)) @@ -400,7 +420,10 @@ void ModuleManager::DoSafeUnload(Module* mod) { std::multimap<std::string, ServiceProvider*>::iterator curr = i++; if (curr->second->creator == mod) + { DataProviders.erase(curr); + FOREACH_MOD(OnServiceDel, (*curr->second)); + } } dynamic_reference_base::reset_all(); @@ -549,6 +572,8 @@ void ModuleManager::AddServices(const ServiceList& list) void ModuleManager::AddService(ServiceProvider& item) { + ServerInstance->Logs.Log("SERVICE", LOG_DEBUG, "Adding %s %s provided by %s", item.name.c_str(), + item.GetTypeString(), item.creator ? item.creator->ModuleSourceFile.c_str() : "the core"); switch (item.service) { case SERVICE_DATA: @@ -576,6 +601,8 @@ void ModuleManager::AddService(ServiceProvider& item) void ModuleManager::DelService(ServiceProvider& item) { + ServerInstance->Logs.Log("SERVICE", LOG_DEBUG, "Deleting %s %s provided by %s", item.name.c_str(), + item.GetTypeString(), item.creator ? item.creator->ModuleSourceFile.c_str() : "the core"); switch (item.service) { case SERVICE_MODE: @@ -586,7 +613,7 @@ void ModuleManager::DelService(ServiceProvider& item) case SERVICE_IOHOOK: { DelReferent(&item); - return; + break; } default: throw ModuleException("Cannot delete unknown service type"); |
