]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_globalload.cpp
Release v2.0.19
[user/henk/code/inspircd.git] / src / modules / m_globalload.cpp
index 9a0074cb40164b50e2f1cc95aeb01a721d70be2c..aed65045f58d78c9d5577e3a66e6a6834844de64 100644 (file)
@@ -84,16 +84,21 @@ class CommandGunloadmodule : public Command
                if (InspIRCd::Match(ServerInstance->Config->ServerName.c_str(), servername))
                {
                        Module* m = ServerInstance->Modules->Find(parameters[0]);
-                       if (m && ServerInstance->Modules->Unload(m))
+                       if (m)
                        {
-                               ServerInstance->SNO->WriteToSnoMask('a', "MODULE '%s' GLOBALLY UNLOADED BY '%s'",parameters[0].c_str(), user->nick.c_str());
-                               user->SendText(":%s 973 %s %s :Module successfully unloaded.",
-                                       ServerInstance->Config->ServerName.c_str(), user->nick.c_str(), parameters[0].c_str());
+                               if (ServerInstance->Modules->Unload(m))
+                               {
+                                       ServerInstance->SNO->WriteToSnoMask('a', "MODULE '%s' GLOBALLY UNLOADED BY '%s'",parameters[0].c_str(), user->nick.c_str());
+                                       user->SendText(":%s 973 %s %s :Module successfully unloaded.",
+                                               ServerInstance->Config->ServerName.c_str(), user->nick.c_str(), parameters[0].c_str());
+                               }
+                               else
+                               {
+                                       user->WriteNumeric(972, "%s %s :%s",user->nick.c_str(), parameters[0].c_str(), ServerInstance->Modules->LastError().c_str());
+                               }
                        }
                        else
-                       {
-                               user->WriteNumeric(972, "%s %s :%s",user->nick.c_str(), parameters[0].c_str(), ServerInstance->Modules->LastError().c_str());
-                       }
+                               user->SendText(":%s 972 %s %s :No such module", ServerInstance->Config->ServerName.c_str(), user->nick.c_str(), parameters[0].c_str());
                }
                else
                        ServerInstance->SNO->WriteToSnoMask('a', "MODULE '%s' GLOBAL UNLOAD BY '%s' (not unloaded here)",parameters[0].c_str(), user->nick.c_str());
@@ -144,7 +149,12 @@ class CommandGreloadmodule : public Command
                {
                        Module* m = ServerInstance->Modules->Find(parameters[0]);
                        if (m)
-                               ServerInstance->Modules->Reload(m, new GReloadModuleWorker(user->nick, user->uuid, parameters[0]));
+                       {
+                               GReloadModuleWorker* worker = NULL;
+                               if ((m != creator) && (!creator->dying))
+                                       worker = new GReloadModuleWorker(user->nick, user->uuid, parameters[0]);
+                               ServerInstance->Modules->Reload(m, worker);
+                       }
                        else
                        {
                                user->WriteNumeric(975, "%s %s :Could not find module by that name", user->nick.c_str(), parameters[0].c_str());
@@ -173,9 +183,13 @@ class ModuleGlobalLoad : public Module
        ModuleGlobalLoad()
                : cmd1(this), cmd2(this), cmd3(this)
        {
-               ServerInstance->AddCommand(&cmd1);
-               ServerInstance->AddCommand(&cmd2);
-               ServerInstance->AddCommand(&cmd3);
+       }
+
+       void init()
+       {
+               ServerInstance->Modules->AddService(cmd1);
+               ServerInstance->Modules->AddService(cmd2);
+               ServerInstance->Modules->AddService(cmd3);
        }
 
        ~ModuleGlobalLoad()