*
* Copyright (C) 2019 nia <nia@netbsd.org>
* Copyright (C) 2019 iwalkalone <iwalkalone69@gmail.com>
- * Copyright (C) 2013, 2017-2019 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2013, 2017-2020 Sadie Powell <sadie@witchery.services>
* Copyright (C) 2013 Daniel Vassdal <shutter@canternet.org>
* Copyright (C) 2013 Adam <Adam@anope.org>
* Copyright (C) 2012-2016, 2018 Attila Molnar <attilamolnar@hush.com>
CullResult Module::cull()
{
+ if (ModuleDLLManager)
+ ServerInstance->GlobalCulls.AddItem(ModuleDLLManager);
return classbase::cull();
}
void Module::OnBackgroundTimer(time_t) { DetachEvent(I_OnBackgroundTimer); }
ModResult Module::OnPreCommand(std::string&, CommandBase::Params&, LocalUser*, bool) { DetachEvent(I_OnPreCommand); return MOD_RES_PASSTHRU; }
void Module::OnPostCommand(Command*, const CommandBase::Params&, LocalUser*, CmdResult, bool) { DetachEvent(I_OnPostCommand); }
+void Module::OnCommandBlocked(const std::string&, const CommandBase::Params&, LocalUser*) { DetachEvent(I_OnCommandBlocked); }
void Module::OnUserInit(LocalUser*) { DetachEvent(I_OnUserInit); }
void Module::OnUserPostInit(LocalUser*) { DetachEvent(I_OnUserPostInit); }
ModResult Module::OnCheckReady(LocalUser*) { DetachEvent(I_OnCheckReady); return MOD_RES_PASSTHRU; }
UnloadAction(Module* m) : mod(m) {}
void Call() CXX11_OVERRIDE
{
- DLLManager* dll = mod->ModuleDLLManager;
ServerInstance->Modules->DoSafeUnload(mod);
ServerInstance->GlobalCulls.Apply();
- // In pure static mode this is always NULL
- delete dll;
ServerInstance->GlobalCulls.AddItem(this);
}
};
std::string ModuleManager::ExpandModName(const std::string& modname)
{
- // Transform "callerid" -> "m_callerid.so" unless it already has a ".so" extension,
- // so coremods in the "core_*.so" form aren't changed
- std::string ret = modname;
- if ((modname.length() < 3) || (modname.compare(modname.size() - 3, 3, ".so")))
- ret.insert(0, "m_").append(".so");
- return ret;
+ std::string fullname;
+ if (modname.compare(0, 5, "core_") != 0 && modname.compare(0, 2, "m_") != 0)
+ fullname.append("m_");
+ fullname.append(modname);
+ if (modname.length() < 3 || modname.compare(modname.size() - 3, 3, ".so") != 0)
+ fullname.append(".so");
+ return fullname;
}
dynamic_reference_base::dynamic_reference_base(Module* Creator, const std::string& Name)