diff options
-rw-r--r-- | modules/commands/os_module.cpp | 5 | ||||
-rw-r--r-- | modules/protocol/bahamut.cpp | 7 | ||||
-rw-r--r-- | modules/protocol/inspircd12.cpp | 8 | ||||
-rw-r--r-- | modules/protocol/inspircd20.cpp | 7 | ||||
-rw-r--r-- | modules/protocol/plexus.cpp | 7 | ||||
-rw-r--r-- | modules/protocol/ratbox.cpp | 8 | ||||
-rw-r--r-- | modules/protocol/unreal.cpp | 8 | ||||
-rw-r--r-- | src/init.cpp | 6 | ||||
-rw-r--r-- | src/main.cpp | 7 |
9 files changed, 55 insertions, 8 deletions
diff --git a/modules/commands/os_module.cpp b/modules/commands/os_module.cpp index 562e130aa..750a29bfa 100644 --- a/modules/commands/os_module.cpp +++ b/modules/commands/os_module.cpp @@ -111,7 +111,10 @@ class CommandOSModReLoad : public Command else { if (fatal) - throw FatalException("Unable to reload module " + mname); + { + quitmsg = "Unable to reload module " + mname; + quitting = true; + } else source.Reply(_("Unable to load module \002%s\002"), mname.c_str()); } diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp index 880d10a3a..796e021e1 100644 --- a/modules/protocol/bahamut.cpp +++ b/modules/protocol/bahamut.cpp @@ -572,6 +572,13 @@ class ProtoBahamut : public Module ModuleManager::Attach(I_OnUserNickChange, this); } + ~ProtoBahamut() + { + pmodule_ircd_var(NULL); + pmodule_ircd_proto(NULL); + pmodule_ircd_message(NULL); + } + void OnUserNickChange(User *u, const Anope::string &) { u->RemoveModeInternal(ModeManager::FindUserModeByName(UMODE_REGISTERED)); diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp index c0c4a0bde..a2e0e0920 100644 --- a/modules/protocol/inspircd12.cpp +++ b/modules/protocol/inspircd12.cpp @@ -758,6 +758,14 @@ class ProtoInspIRCd : public Module ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); } + ~ProtoInspIRCd() + { + pmodule_ircd_var(NULL); + pmodule_ircd_proto(NULL); + pmodule_ircd_message(NULL); + } + + void OnUserNickChange(User *u, const Anope::string &) { /* InspIRCd 1.2 doesn't set -r on nick change, remove -r here. Note that if we have to set +r later diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index 0edcc94a7..f210525c5 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -754,6 +754,13 @@ class ProtoInspIRCd : public Module ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); } + ~ProtoInspIRCd() + { + pmodule_ircd_var(NULL); + pmodule_ircd_proto(NULL); + pmodule_ircd_message(NULL); + } + void OnUserNickChange(User *u, const Anope::string &) { u->RemoveModeInternal(ModeManager::FindUserModeByName(UMODE_REGISTERED)); diff --git a/modules/protocol/plexus.cpp b/modules/protocol/plexus.cpp index 9947d02ab..fd6379fc9 100644 --- a/modules/protocol/plexus.cpp +++ b/modules/protocol/plexus.cpp @@ -658,6 +658,13 @@ class ProtoPlexus : public Module ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); } + ~ProtoPlexus() + { + pmodule_ircd_var(NULL); + pmodule_ircd_proto(NULL); + pmodule_ircd_message(NULL); + } + void OnServerSync(Server *s) { if (nickserv) diff --git a/modules/protocol/ratbox.cpp b/modules/protocol/ratbox.cpp index 516452ce5..c47189736 100644 --- a/modules/protocol/ratbox.cpp +++ b/modules/protocol/ratbox.cpp @@ -598,6 +598,14 @@ class ProtoRatbox : public Module ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); } + ~ProtoRatbox() + { + pmodule_ircd_var(NULL); + pmodule_ircd_proto(NULL); + pmodule_ircd_message(NULL); + } + + void OnServerSync(Server *s) { if (nickserv) diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp index 902309267..38b9da82b 100644 --- a/modules/protocol/unreal.cpp +++ b/modules/protocol/unreal.cpp @@ -1138,6 +1138,14 @@ class ProtoUnreal : public Module ModuleManager::Attach(I_OnUserNickChange, this); } + ~ProtoUnreal() + { + pmodule_ircd_var(NULL); + pmodule_ircd_proto(NULL); + pmodule_ircd_message(NULL); + } + + void OnUserNickChange(User *u, const Anope::string &) { u->RemoveModeInternal(ModeManager::FindUserModeByName(UMODE_REGISTERED)); diff --git a/src/init.cpp b/src/init.cpp index 49d9759a8..4cff3fc91 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -21,7 +21,11 @@ void introduce_user(const Anope::string &user) time_t now = Anope::CurTime; static time_t lasttime = now - 4; if (lasttime >= now - 3) - throw FatalException("introduce_user loop detected"); + { + quitmsg = "introduce_user loop detected"; + quitting = true; + return; + } lasttime = now; User *u = finduser(user); diff --git a/src/main.cpp b/src/main.cpp index 875e4eeb6..3730c60ea 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -68,9 +68,6 @@ time_t Anope::CurTime = time(NULL); /******** Local variables! ********/ -/* Set to 1 after we've set everything up */ -static bool started = false; - /*************************************************************************/ class UpdateTimer : public Timer @@ -118,7 +115,7 @@ class UplinkSocket : public ConnectionSocket ~UplinkSocket() { - if (Me && !Me->GetLinks().empty() && Me->GetLinks()[0]->IsSynced()) + if (ircdproto && Me && !Me->GetLinks().empty() && Me->GetLinks()[0]->IsSynced()) { FOREACH_MOD(I_OnServerDisconnect, OnServerDisconnect()); @@ -354,8 +351,6 @@ int main(int ac, char **av, char **envp) return_code = -1; } - started = true; - /* Set up timers */ time_t last_check = Anope::CurTime; UpdateTimer updateTimer(Config->UpdateTimeout); |