summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-10-16 15:43:53 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-10-16 15:43:53 +0000
commit7c55dfc7887b2ca91e4ebdf9f2733de8adb56e18 (patch)
tree49c0b12a63774597e950ed0168630e35966f0cfa /src
parent04e097e20747f07cd69722535fa68a6506882d9f (diff)
Clean up crash on destruction of statics at exit
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11877 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r--src/mode.cpp3
-rw-r--r--src/modules/m_banexception.cpp8
-rw-r--r--src/modules/m_inviteexception.cpp10
-rw-r--r--src/modules/m_namedmodes.cpp5
-rw-r--r--src/server.cpp1
5 files changed, 10 insertions, 17 deletions
diff --git a/src/mode.cpp b/src/mode.cpp
index 98b5fe8c4..03d0b5269 100644
--- a/src/mode.cpp
+++ b/src/mode.cpp
@@ -57,7 +57,8 @@ ModeHandler::ModeHandler(Module* Creator, const std::string& Name, char modelett
ModeHandler::~ModeHandler()
{
- ServerInstance->Modes->DelMode(this);
+ if (ServerInstance)
+ ServerInstance->Modes->DelMode(this);
}
bool ModeHandler::IsListMode()
diff --git a/src/modules/m_banexception.cpp b/src/modules/m_banexception.cpp
index aac8fe776..5059fbbed 100644
--- a/src/modules/m_banexception.cpp
+++ b/src/modules/m_banexception.cpp
@@ -44,7 +44,6 @@ public:
{
if (!ServerInstance->Modes->AddMode(&be))
throw ModuleException("Could not add new modes!");
- ServerInstance->Modules->PublishInterface("ChannelBanList", this);
be.DoImplements(this);
Implementation list[] = { I_OnRehash, I_On005Numeric, I_OnExtBanCheck, I_OnCheckChannelBan };
@@ -123,12 +122,7 @@ public:
Version GetVersion()
{
- return Version("Provides support for the +e channel mode", VF_COMMON | VF_VENDOR, API_VERSION);
- }
-
- ~ModuleBanException()
- {
- ServerInstance->Modules->UnpublishInterface("ChannelBanList", this);
+ return Version("Provides support for the +e channel mode", VF_COMMON | VF_VENDOR);
}
};
diff --git a/src/modules/m_inviteexception.cpp b/src/modules/m_inviteexception.cpp
index 7fe7d40dc..9d0e0f54e 100644
--- a/src/modules/m_inviteexception.cpp
+++ b/src/modules/m_inviteexception.cpp
@@ -43,7 +43,6 @@ public:
{
if (!ServerInstance->Modes->AddMode(&ie))
throw ModuleException("Could not add new modes!");
- ServerInstance->Modules->PublishInterface("ChannelBanList", this);
ie.DoImplements(this);
Implementation eventlist[] = { I_On005Numeric, I_OnCheckInvite };
@@ -62,7 +61,6 @@ public:
modelist* list = ie.extItem.get(chan);
if (list)
{
- std::string mask = std::string(user->nick) + "!" + user->ident + "@" + user->GetIPString();
for (modelist::iterator it = list->begin(); it != list->end(); it++)
{
if (chan->CheckBan(user, it->mask))
@@ -71,7 +69,6 @@ public:
}
}
}
- // or if there wasn't a list, there can't be anyone on it, so we don't need to do anything.
}
return MOD_RES_PASSTHRU;
@@ -94,12 +91,7 @@ public:
Version GetVersion()
{
- return Version("Provides support for the +I channel mode", VF_VENDOR | VF_COMMON, API_VERSION);
- }
-
- ~ModuleInviteException()
- {
- ServerInstance->Modules->UnpublishInterface("ChannelBanList", this);
+ return Version("Provides support for the +I channel mode", VF_VENDOR | VF_COMMON);
}
};
diff --git a/src/modules/m_namedmodes.cpp b/src/modules/m_namedmodes.cpp
index 4bf8960e1..bc8279f69 100644
--- a/src/modules/m_namedmodes.cpp
+++ b/src/modules/m_namedmodes.cpp
@@ -27,6 +27,11 @@ class ModuleNamedModes : public Module
return Version("Provides the ability to manipulate modes via long names.",VF_VENDOR);
}
+ void Prioritize()
+ {
+ ServerInstance->Modules->SetPriority(this, I_OnPreMode, PRIORITY_FIRST);
+ }
+
void On005Numeric(std::string& line)
{
std::string::size_type pos = line.find(" CHANMODES=");
diff --git a/src/server.cpp b/src/server.cpp
index e5546654e..085348976 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -44,6 +44,7 @@ void InspIRCd::Exit(int status)
this->SendError("Exiting with status " + ConvToStr(status) + " (" + std::string(ExitCodes[status]) + ")");
this->Cleanup();
delete this;
+ ServerInstance = NULL;
}
exit (status);
}