diff options
author | Adam <Adam@anope.org> | 2011-04-27 10:56:20 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-05-16 04:09:07 -0400 |
commit | 284af258bf3c4dc7f409722d66bb0ac59e01e37d (patch) | |
tree | 5649a27a7a247c2609a4ef13b52a357765cbdfcc /src/modulemanager.cpp | |
parent | e7887c1f013248274574ab8e3167f742ccb3d69b (diff) |
Added more useful functions to our LDAP API, allow adding newly registered accounts to LDAP, removed some unnecessary OnPre events and fixed unloading all modules
Diffstat (limited to 'src/modulemanager.cpp')
-rw-r--r-- | src/modulemanager.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp index d9d105953..ac6316728 100644 --- a/src/modulemanager.cpp +++ b/src/modulemanager.cpp @@ -472,16 +472,17 @@ void ModuleManager::ClearCallBacks(Module *m) */ void ModuleManager::UnloadAll() { + std::vector<Anope::string> modules[MT_END]; + for (std::list<Module *>::iterator it = Modules.begin(), it_end = Modules.end(); it != it_end; ++it) + modules[(*it)->type].push_back((*it)->name); + for (size_t i = MT_BEGIN + 1; i != MT_END; ++i) - { - for (std::list<Module *>::iterator it = Modules.begin(), it_end = Modules.end(); it != it_end; ) + for (unsigned j = 0; j < modules[i].size(); ++j) { - Module *m = *it++; - - if (static_cast<MODType>(i) == m->type) + Module *m = FindModule(modules[i][j]); + if (m != NULL) UnloadModule(m, NULL); } - } } /** Register a service |