summaryrefslogtreecommitdiff
path: root/src/modules/m_joinflood.cpp
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-09-13 17:47:35 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-09-13 17:47:35 +0000
commit5f02706fb0a3db069a2e5a7754c2aad91cbe86e4 (patch)
tree7682bffdb4366c119b064a7db4b6cd37bbf4b8bd /src/modules/m_joinflood.cpp
parent456516e3f5372cb0e8f135ce39d4de7df988cb93 (diff)
Merge jamies many patches
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5223 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_joinflood.cpp')
-rw-r--r--src/modules/m_joinflood.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/modules/m_joinflood.cpp b/src/modules/m_joinflood.cpp
index c7b5700d2..391f13b24 100644
--- a/src/modules/m_joinflood.cpp
+++ b/src/modules/m_joinflood.cpp
@@ -157,6 +157,33 @@ class JoinFlood : public ModeHandler
channel->SetModeParam('j', parameter.c_str(), true);
return MODEACTION_ALLOW;
}
+ else
+ {
+ std::string cur_param = channel->GetModeParameter('j');
+ parameter = ConvToStr(njoins) + ":" +ConvToStr(nsecs);
+ if (cur_param == parameter)
+ {
+ // mode params match
+ return MODEACTION_DENY;
+ }
+ else
+ {
+ // new mode param, replace old with new
+ if ((!nsecs) && (!njoins))
+ {
+ joinfloodsettings *f = new joinfloodsettings(nsecs,njoins);
+ channel->Shrink("joinflood");
+ channel->Extend("joinflood", f);
+ channel->SetModeParam('j', cur_param.c_str(), false);
+ channel->SetModeParam('j', parameter.c_str(), true);
+ return MODEACTION_ALLOW;
+ }
+ else
+ {
+ return MODEACTION_DENY;
+ }
+ }
+ }
}
}
else