summaryrefslogtreecommitdiff
path: root/modules/commands/cs_mode.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2013-03-31 00:20:20 -0500
committerAdam <Adam@anope.org>2013-03-31 00:43:11 -0500
commit6e0dc0e2103494d50dd4bd9920550d1653365f05 (patch)
tree10b89c24cae17069a0cc97db376d960220f7089d /modules/commands/cs_mode.cpp
parent7e7556f06445d4d8e607ef514c9fb5009899db73 (diff)
Add networkinfo:modelistsize config option to set the max size of b/e/I lists
Diffstat (limited to 'modules/commands/cs_mode.cpp')
-rw-r--r--modules/commands/cs_mode.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/modules/commands/cs_mode.cpp b/modules/commands/cs_mode.cpp
index d44e7e07b..823b60f8e 100644
--- a/modules/commands/cs_mode.cpp
+++ b/modules/commands/cs_mode.cpp
@@ -102,6 +102,8 @@ class CommandCSMode : public Command
Anope::string mode_param;
if (((cm->type == MODE_STATUS || cm->type == MODE_LIST) && !sep.GetToken(mode_param)) || (cm->type == MODE_PARAM && adding && !sep.GetToken(mode_param)))
source.Reply(_("Missing parameter for mode %c."), cm->mchar);
+ else if (cm->type == MODE_LIST && ci->c && IRCD->GetMaxListFor(ci->c) && ci->c->HasMode(cm->name) >= IRCD->GetMaxListFor(ci->c))
+ source.Reply(_("List for mode %c is full."), cm->mchar);
else
{
ci->SetMLock(cm, adding, mode_param, source.GetNick());
@@ -371,7 +373,10 @@ class CommandCSMode : public Command
if (!sep.GetToken(param))
break;
if (adding)
- ci->c->SetMode(NULL, cm, param);
+ {
+ if (IRCD->GetMaxListFor(ci->c) && ci->c->HasMode(cm->name) < IRCD->GetMaxListFor(ci->c))
+ ci->c->SetMode(NULL, cm, param);
+ }
else
{
std::pair<Channel::ModeList::iterator, Channel::ModeList::iterator> its = ci->c->GetModeList(cm->name);