X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules.cpp;h=5c5e5c5c03c9c67e371a6a49954d05ed1d06ec8f;hb=1f3b7f2455b0d73d8874daff0459f4bde46b9524;hp=567aa917cdb9aab8140c8c3948325c2e4d48c36d;hpb=6c4a6b1753926f7de2cc210bf25d1b3c87c181e9;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules.cpp b/src/modules.cpp index 567aa917c..5c5e5c5c0 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -363,6 +363,10 @@ void ModuleManager::DoSafeUnload(Module* mod) std::map::iterator modfind = Modules.find(mod->ModuleSourceFile); + // Unregister modes before extensions because modes may require their extension to show the mode being unset + UnregisterModes(mod, MODETYPE_USER); + UnregisterModes(mod, MODETYPE_CHANNEL); + std::vector > items; ServerInstance->Extensions.BeginUnregister(modfind->second, items); /* Give the module a chance to tidy out all its metadata */ @@ -388,9 +392,6 @@ void ModuleManager::DoSafeUnload(Module* mod) user->doUnhookExtensions(items); } - UnregisterModes(mod, MODETYPE_USER); - UnregisterModes(mod, MODETYPE_CHANNEL); - for(std::multimap::iterator i = DataProviders.begin(); i != DataProviders.end(); ) { std::multimap::iterator curr = i++;