X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_pbkdf2.cpp;h=8b1346c845659bbd71ff0f5e082f8d3d2987f6ed;hb=9c4cc196c073145d4ad2ae92fb2be2194cf621f4;hp=314f6b83642f1796cdaa4f074cfc8d418fce3ac6;hpb=6fe1f4e1136f2ab95a88e68af1894bf6002d03f4;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_pbkdf2.cpp b/src/modules/m_pbkdf2.cpp index 314f6b836..8b1346c84 100644 --- a/src/modules/m_pbkdf2.cpp +++ b/src/modules/m_pbkdf2.cpp @@ -180,71 +180,35 @@ class ModulePBKDF2 : public Module stdalgo::delete_all(providers); } - void Prioritize() CXX11_OVERRIDE + void OnServiceAdd(ServiceProvider& provider) CXX11_OVERRIDE { - OnLoadModule(NULL); - } - - void OnLoadModule(Module* mod) CXX11_OVERRIDE - { - bool newProv = false; - // As the module doesn't tell us what ServiceProviders it has, let's iterate all (yay ...) the ServiceProviders - // Good thing people don't run loading and unloading those all the time - for (std::multimap::iterator i = ServerInstance->Modules->DataProviders.begin(); i != ServerInstance->Modules->DataProviders.end(); ++i) - { - ServiceProvider* provider = i->second; - - // Does the service belong to the new mod? - // In the case this is our first run (mod == NULL, continue anyway) - if (mod && provider->creator != mod) - continue; - - // Check if it's a hash provider - if (provider->name.compare(0, 5, "hash/")) - continue; - - HashProvider* hp = static_cast(provider); - - if (hp->IsKDF()) - continue; - - bool has_prov = false; - for (std::vector::const_iterator j = providers.begin(); j != providers.end(); ++j) - { - if ((*j)->provider == hp) - { - has_prov = true; - break; - } - } - if (has_prov) - continue; + // Check if it's a hash provider + if (provider.name.compare(0, 5, "hash/")) + return; - newProv = true; + HashProvider* hp = static_cast(&provider); + if (hp->IsKDF()) + return; - PBKDF2Provider* prov = new PBKDF2Provider(this, hp); - providers.push_back(prov); - ServerInstance->Modules->AddService(*prov); - } + PBKDF2Provider* prov = new PBKDF2Provider(this, hp); + providers.push_back(prov); + ServerInstance->Modules.AddService(*prov); - if (newProv) - GetConfig(); + GetConfig(); } - void OnUnloadModule(Module* mod) CXX11_OVERRIDE + void OnServiceDel(ServiceProvider& prov) CXX11_OVERRIDE { - for (std::vector::iterator i = providers.begin(); i != providers.end(); ) + for (std::vector::iterator i = providers.begin(); i != providers.end(); ++i) { PBKDF2Provider* item = *i; - if (item->provider->creator != mod) - { - ++i; + if (item->provider != &prov) continue; - } ServerInstance->Modules->DelService(*item); delete item; - i = providers.erase(i); + providers.erase(i); + break; } }