diff options
author | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-02-06 19:27:32 +0000 |
---|---|---|
committer | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-02-06 19:27:32 +0000 |
commit | 4099944013af67964be367b66b170edfb0db2404 (patch) | |
tree | e942353b51002d71d30b281e6ed563e7b2ecd2f6 /src | |
parent | 87b62c433d3abdf92b8d55987f76553d9422c3d2 (diff) |
Recieve the max number of modes we can set at once from the IRCd and use it
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2783 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/modes.cpp | 4 | ||||
-rw-r--r-- | src/protocol/bahamut.c | 1 | ||||
-rw-r--r-- | src/protocol/inspircd11.c | 6 | ||||
-rw-r--r-- | src/protocol/inspircd12.cpp | 6 | ||||
-rw-r--r-- | src/protocol/ratbox.c | 1 | ||||
-rw-r--r-- | src/protocol/unreal32.c | 1 |
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} |