mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-13 20:49:02 -04:00
Fix issue where the last module to be loaded wasnt unloaded by restart
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6074 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
f5f71bdfef
commit
c1316150a7
@ -80,20 +80,20 @@ void InspIRCd::Restart(const std::string &reason)
|
||||
/* This calls the constructor and closes the listening socket */
|
||||
delete Config->openSockfd[i];
|
||||
|
||||
/* We do this twice, so that any service providers get a chance to be
|
||||
* unhooked by the modules using them, but then get a chance to be
|
||||
* removed themsleves.
|
||||
/* We do this more than once, so that any service providers get a
|
||||
* chance to be* unhooked by the modules using them, but then get
|
||||
* a chance to be removed themsleves.
|
||||
*/
|
||||
for (int tries = 0; tries < 2; tries++)
|
||||
for (int tries = 0; tries < 3; tries++)
|
||||
{
|
||||
MyModCount = this->GetModuleCount();
|
||||
mymodnames.clear();
|
||||
|
||||
/* Unload all modules, so they get a chance to clean up their listeners */
|
||||
for (int j = 0; j < ModCount; j++)
|
||||
for (int j = 0; j <= MyModCount; j++)
|
||||
mymodnames.push_back(Config->module_names[j]);
|
||||
|
||||
for (int k = 0; k < MyModCount; k++)
|
||||
for (int k = 0; k <= MyModCount; k++)
|
||||
this->UnloadModule(mymodnames[k].c_str());
|
||||
}
|
||||
|
||||
|
@ -328,6 +328,10 @@ std::pair<int,std::string> InspIRCd::GetInterfaceInstanceCount(Module* m)
|
||||
const std::string& InspIRCd::GetModuleName(Module* m)
|
||||
{
|
||||
static std::string nothing = ""; /* Prevent compiler warning */
|
||||
|
||||
if (!this->GetModuleCount())
|
||||
return nothing;
|
||||
|
||||
for (int i = 0; i <= this->GetModuleCount(); i++)
|
||||
{
|
||||
if (this->modules[i] == m)
|
||||
|
Loading…
x
Reference in New Issue
Block a user