diff options
-rw-r--r-- | include/modules.h | 14 | ||||
-rw-r--r-- | src/commands/cmd_modules.cpp | 4 | ||||
-rw-r--r-- | src/commands/cmd_stats.cpp | 2 | ||||
-rw-r--r-- | src/inspircd.cpp | 19 | ||||
-rw-r--r-- | src/modules.cpp | 9 | ||||
-rw-r--r-- | src/modules/m_httpd_stats.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_spanningtree/treesocket1.cpp | 7 |
7 files changed, 25 insertions, 34 deletions
diff --git a/include/modules.h b/include/modules.h index 49fd0da50..908a3e264 100644 --- a/include/modules.h +++ b/include/modules.h @@ -1642,18 +1642,6 @@ class CoreExport ModuleManager : public classbase */ Module* Find(const std::string &name); - /** Remove a module handle pointer - * @param j Index number of the module handle to remove - * @return True if a handle existed at the given index, false otherwise - */ - bool EraseHandle(unsigned int j); - - /** Remove a Module pointer - * @param j Index number of the Module to remove - * @return True if a handle existed at the given index, false otherwise - */ - bool EraseModule(unsigned int j); - /** Publish a 'feature'. * There are two ways for a module to find another module it depends on. * Either by name, using InspIRCd::FindModule, or by feature, using this @@ -1756,6 +1744,8 @@ class CoreExport ModuleManager : public classbase * @return The module name or an empty string */ const std::string& GetModuleName(Module* m); + + const std::vector<std::string> GetAllModuleNames(int filter); }; /** This definition is used as shorthand for the various classes diff --git a/src/commands/cmd_modules.cpp b/src/commands/cmd_modules.cpp index f961b6268..a70477e69 100644 --- a/src/commands/cmd_modules.cpp +++ b/src/commands/cmd_modules.cpp @@ -39,7 +39,7 @@ extern "C" DllExport Command* init_command(InspIRCd* Instance) /** Handle /MODULES */ CmdResult CommandModules::Handle (const char**, int, User *user) -{ +{/* XXX FIXME for (unsigned int i = 0; i < ServerInstance->Config->module_names.size(); i++) { Version V = ServerInstance->Modules->modules[i]->GetVersion(); @@ -67,6 +67,6 @@ CmdResult CommandModules::Handle (const char**, int, User *user) } } user->WriteServ("901 %s :End of MODULES list",user->nick); - + */ return CMD_SUCCESS; } diff --git a/src/commands/cmd_stats.cpp b/src/commands/cmd_stats.cpp index 74658a149..4814c419e 100644 --- a/src/commands/cmd_stats.cpp +++ b/src/commands/cmd_stats.cpp @@ -194,8 +194,6 @@ DllExport void DoStats(InspIRCd* ServerInstance, char statschar, User* user, str } results.push_back(sn+" 249 "+user->nick+" :MOTD(VECTOR) "+ConvToStr(ServerInstance->Config->MOTD.size())+", RULES(VECTOR) "+ConvToStr(ServerInstance->Config->RULES.size())); - results.push_back(sn+" 249 "+user->nick+" :Modules(VECTOR) "+ConvToStr(ServerInstance->Modules->modules.size())+" ("+ConvToStr(ServerInstance->Modules->modules.size()*sizeof(Module))+" bytes)"); - results.push_back(sn+" 249 "+user->nick+" :ModuleHandles(VECTOR) "+ConvToStr(ServerInstance->Modules->handles.size())+" ("+ConvToStr(ServerInstance->Modules->handles.size()*sizeof(ircd_module))+" bytes)"); #ifndef WIN32 /* Moved this down here so all the not-windows stuff (look w00tie, I didn't say win32!) is in one ifndef. diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 1f46fa875..e5e9ad5b3 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -103,11 +103,13 @@ void InspIRCd::Cleanup() if (MyModCount) { /* Unload all modules, so they get a chance to clean up their listeners */ - for (int j = 0; j <= MyModCount; j++) + /*XXX FIXME + * for (int j = 0; j <= MyModCount; j++) mymodnames.push_back(Config->module_names[j]); for (int k = 0; k <= MyModCount; k++) this->Modules->Unload(mymodnames[k].c_str()); + */ } } @@ -715,18 +717,13 @@ int main(int argc, char ** argv) */ bool InspIRCd::AllModulesReportReady(User* user) { - if (!Config->global_implementation[I_OnCheckReady]) - return true; - - for (int i = 0; i <= this->Modules->GetCount(); i++) + for (EventHandlerIter i = Modules->EventHandlers[I_OnCheckReady].begin(); i != Modules->EventHandlers[I_OnCheckReady].end(); ++i) { - if (Config->implement_lists[i][I_OnCheckReady]) - { - int res = this->Modules->modules[i]->OnCheckReady(user); - if (!res) - return false; - } + int res = (*i)->OnCheckReady(user); + if (!res) + return false; } + return true; } diff --git a/src/modules.cpp b/src/modules.cpp index 7bc9f94c4..29c185f1a 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -785,6 +785,15 @@ Module* ModuleManager::Find(const std::string &name) return modfind->second.second; } +const std::vector<std::string> ModuleManager::GetAllModuleNames(int filter) +{ + std::vector<std::string> retval; + for (std::map<std::string, std::pair<ircd_module*, Module*> >::iterator x = Modules.begin(); x != Modules.end(); ++x) + if (!filter || (x->second.second->GetVersion().Flags & filter)) + retval.push_back(x->first); + return retval; +} + ConfigReader::ConfigReader(InspIRCd* Instance) : ServerInstance(Instance) { /* Is there any reason to load the entire config file again here? diff --git a/src/modules/m_httpd_stats.cpp b/src/modules/m_httpd_stats.cpp index 1022d1563..ef1b87cb8 100644 --- a/src/modules/m_httpd_stats.cpp +++ b/src/modules/m_httpd_stats.cpp @@ -119,7 +119,8 @@ class ModuleHttpStats : public Module data << "</general>"; data << "<modulelist>"; - for (int i = 0; i <= ServerInstance->Modules->GetCount(); i++) + /* XXX FIXME + * for (int i = 0; i <= ServerInstance->Modules->GetCount(); i++) { if (!ServerInstance->Config->module_names[i].empty()) { @@ -128,6 +129,7 @@ class ModuleHttpStats : public Module v.Major << "." << v.Minor << "." << v.Revision << "." << v.Build << "</version></module>"; } } + */ data << "</modulelist>"; data << "<channellist>"; diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp index 18ae9b6cd..488607c96 100644 --- a/src/modules/m_spanningtree/treesocket1.cpp +++ b/src/modules/m_spanningtree/treesocket1.cpp @@ -277,13 +277,8 @@ void TreeSocket::SendServers(TreeServer* Current, TreeServer* s, int hops) std::string TreeSocket::MyCapabilities() { - std::vector<std::string> modlist; + std::vector<std::string> modlist = this->Instance->Modules->GetAllModuleNames(VF_COMMON); std::string capabilities; - for (int i = 0; i <= this->Instance->Modules->GetCount(); i++) - { - if (this->Instance->Modules->modules[i]->GetVersion().Flags & VF_COMMON) - modlist.push_back(this->Instance->Config->module_names[i]); - } sort(modlist.begin(),modlist.end()); for (unsigned int i = 0; i < modlist.size(); i++) { |