summaryrefslogtreecommitdiff
path: root/src/modules/m_chanprotect.cpp
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-04-02 23:53:29 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-04-02 23:53:29 +0000
commit57608fe351cff19679b1d78fb5cbfb7cad89dfc1 (patch)
treed88625afe327da2794cd34bd4d723d87df251cb7 /src/modules/m_chanprotect.cpp
parent80959555778404b7f0cdd4bd171ea7e1fe6116e9 (diff)
Fixes for bug #493, tidyups to clearing of channel modes on losing FJOIN. Module unloads may also be tidied at a future date but it means reordering some loops in mode.cpp. See around the comment added.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9283 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_chanprotect.cpp')
-rw-r--r--src/modules/m_chanprotect.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/modules/m_chanprotect.cpp b/src/modules/m_chanprotect.cpp
index daa728e61..0cc4fe8d7 100644
--- a/src/modules/m_chanprotect.cpp
+++ b/src/modules/m_chanprotect.cpp
@@ -62,7 +62,7 @@ class FounderProtectBase
return std::make_pair(false, parameter);
}
- void RemoveMode(Channel* channel, char mc)
+ void RemoveMode(Channel* channel, char mc, irc::modestacker* stack)
{
CUList* cl = channel->GetUsers();
std::string item = extend + std::string(channel->name);
@@ -75,10 +75,16 @@ class FounderProtectBase
{
if (i->first->GetExt(item))
{
- modestack.Push(mc, i->first->nick);
+ if (stack)
+ stack->Push(mc, i->first->nick);
+ else
+ modestack.Push(mc, i->first->nick);
}
}
+ if (stack)
+ return;
+
while (modestack.GetStackedLine(stackresult))
{
for (size_t j = 0; j < stackresult.size(); j++)
@@ -165,12 +171,12 @@ class ChanFounder : public ModeHandler, public FounderProtectBase
return FounderProtectBase::ModeSet(source, dest, channel, parameter);
}
- void RemoveMode(Channel* channel)
+ void RemoveMode(Channel* channel, irc::modestacker* stack)
{
- FounderProtectBase::RemoveMode(channel, this->GetModeChar());
+ FounderProtectBase::RemoveMode(channel, this->GetModeChar(), stack);
}
- void RemoveMode(User* user)
+ void RemoveMode(User* user, irc::modestacker* stack)
{
}
@@ -231,12 +237,12 @@ class ChanProtect : public ModeHandler, public FounderProtectBase
return FounderProtectBase::ModeSet(source, dest, channel, parameter);
}
- void RemoveMode(Channel* channel)
+ void RemoveMode(Channel* channel, irc::modestacker* stack)
{
- FounderProtectBase::RemoveMode(channel, this->GetModeChar());
+ FounderProtectBase::RemoveMode(channel, this->GetModeChar(), stack);
}
- void RemoveMode(User* user)
+ void RemoveMode(User* user, irc::modestacker* stack)
{
}