summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/modes.cpp4
-rw-r--r--src/protocol/bahamut.c1
-rw-r--r--src/protocol/inspircd11.c6
-rw-r--r--src/protocol/inspircd12.cpp6
-rw-r--r--src/protocol/ratbox.c1
-rw-r--r--src/protocol/unreal32.c1
6 files changed, 17 insertions, 2 deletions
diff --git a/src/modes.cpp b/src/modes.cpp
index 0c259ea7c..c915ca351 100644
--- a/src/modes.cpp
+++ b/src/modes.cpp
@@ -484,7 +484,7 @@ std::list<std::string> ModeManager::BuildModeStrings(StackerInfo *info)
buf = "+";
for (it = info->AddModes.begin(); it != info->AddModes.end(); ++it)
{
- if (++Modes > 12) //XXX this number needs to be recieved from the ircd
+ if (++Modes > ircd->maxmodes)
{
ret.push_back(buf + parambuf);
buf = "+";
@@ -513,7 +513,7 @@ std::list<std::string> ModeManager::BuildModeStrings(StackerInfo *info)
buf += "-";
for (it = info->DelModes.begin(); it != info->DelModes.end(); ++it)
{
- if (++Modes > 12) //XXX this number needs to be recieved from the ircd
+ if (++Modes > ircd->maxmodes)
{
ret.push_back(buf + parambuf);
buf = "-";
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c
index d9c32892c..1115e05e7 100644
--- a/src/protocol/bahamut.c
+++ b/src/protocol/bahamut.c
@@ -56,6 +56,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
"$", /* TLD Prefix for Global */
false, /* Auth for users is sent after the initial NICK/UID command */
+ 6, /* Max number of modes we can send per line */
}
,
{NULL}
diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c
index 551233b00..8ab4c2693 100644
--- a/src/protocol/inspircd11.c
+++ b/src/protocol/inspircd11.c
@@ -73,6 +73,7 @@ IRCDVar myIrcd[] = {
1, /* CIDR channelbans */
"$", /* TLD Prefix for Global */
false, /* Auth for users is sent after the initial NICK/UID command */
+ 20, /* Max number of modes we can send per line */
}
,
{NULL}
@@ -1079,6 +1080,11 @@ int anope_event_capab(const char *source, int ac, const char **av)
}
}
}
+ else if (capab.find("MAXMODES=") != std::string::npos)
+ {
+ std::string maxmodes(capab.begin() + 10, capab.end());
+ ircd->maxmodes = atoi(maxmodes.c_str());
+ }
}
} else if (strcasecmp(av[0], "END") == 0) {
if (!has_globopsmod) {
diff --git a/src/protocol/inspircd12.cpp b/src/protocol/inspircd12.cpp
index 3c5f4202c..27acf77a2 100644
--- a/src/protocol/inspircd12.cpp
+++ b/src/protocol/inspircd12.cpp
@@ -73,6 +73,7 @@ IRCDVar myIrcd[] = {
1, /* CIDR channelbans */
"$", /* TLD Prefix for Global */
true, /* Auth for users is sent after the initial NICK/UID command */
+ 20, /* Max number of modes we can send per line */
}
,
{NULL}
@@ -1266,6 +1267,11 @@ int anope_event_capab(const char *source, int ac, const char **av)
}
}
}
+ else if (capab.find("MAXMODES=") != std::string::npos)
+ {
+ std::string maxmodes(capab.begin() + 10, capab.end());
+ ircd->maxmodes = atoi(maxmodes.c_str());
+ }
}
} else if (strcasecmp(av[0], "END") == 0) {
if (!has_globopsmod) {
diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c
index 2564a99f3..b3fa7eaf0 100644
--- a/src/protocol/ratbox.c
+++ b/src/protocol/ratbox.c
@@ -54,6 +54,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
"$$", /* TLD Prefix for Global */
false, /* Auth for users is sent after the initial NICK/UID command */
+ 4, /* Max number of modes we can send per line */
}
,
{NULL}
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index 71e2d09c4..8ef6ca187 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -56,6 +56,7 @@ IRCDVar myIrcd[] = {
0, /* CIDR channelbans */
"$", /* TLD Prefix for Global */
false, /* Auth for users is sent after the initial NICK/UID command */
+ 12, /* Max number of modes we can send per line */
}
,
{NULL}