]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/coremods/core_reloadmodule.cpp
Return true from Channel::PartUser() if the user was on the channel
[user/henk/code/inspircd.git] / src / coremods / core_reloadmodule.cpp
index 755b49abfb95b73a19f89135aaf07c5ccd3bc94a..0d01d9e856519a44c7fb9bd5c7fab2cfc33545a9 100644 (file)
@@ -236,6 +236,10 @@ class DataKeeper
         * @param newmod Newly loaded instance of the module which had its data saved
         */
        void Restore(Module* newmod);
+
+       /** Handle reload failure
+        */
+       void Fail();
 };
 
 void DataKeeper::DoSaveUsers()
@@ -468,6 +472,14 @@ void DataKeeper::Restore(Module* newmod)
        ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Restore finished");
 }
 
+void DataKeeper::Fail()
+{
+       this->mod = NULL;
+
+       ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Restore failed, notifying modules");
+       DoRestoreModules();
+}
+
 void DataKeeper::RestoreObj(const OwnedModesExts& data, Extensible* extensible, ModeType modetype, Modes::ChangeList& modechange)
 {
        RestoreExtensions(data.extlist, extensible);
@@ -583,6 +595,8 @@ class ReloadAction : public HandlerBase0<void>
                        Module* newmod = ServerInstance->Modules->Find(name);
                        datakeeper.Restore(newmod);
                }
+               else
+                       datakeeper.Fail();
 
                ServerInstance->SNO->WriteGlobalSno('a', "RELOAD MODULE: %s %ssuccessfully reloaded", passedname.c_str(), result ? "" : "un");
                User* user = ServerInstance->FindUUID(uuid);