summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/inspircd_io.h6
-rw-r--r--src/helperfuncs.cpp17
-rw-r--r--src/inspircd_io.cpp9
3 files changed, 21 insertions, 11 deletions
diff --git a/include/inspircd_io.h b/include/inspircd_io.h
index 6d9085786..d1356954c 100644
--- a/include/inspircd_io.h
+++ b/include/inspircd_io.h
@@ -308,8 +308,14 @@ class ServerConfig : public classbase
*/
char CustomVersion[MAXBUF];
+ /** List of u-lined servers
+ */
std::vector<irc::string> ulines;
+ /** Max banlist sizes for channels (the std::string is a glob)
+ */
+ std::map<std::string,int> maxbans;
+
ServerConfig();
/** Clears the include stack in preperation for
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index c6fb806ed..431e34947 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -1098,17 +1098,12 @@ chanrec* FindChan(const char* chan)
long GetMaxBans(char* name)
{
- char CM[MAXBUF];
- for (int count = 0; count < Config->ConfValueEnum("banlist",&Config->config_f); count++)
- {
- Config->ConfValue("banlist","chan",count,CM,&Config->config_f);
- if (match(name,CM))
- {
- Config->ConfValue("banlist","limit",count,CM,&Config->config_f);
- return atoi(CM);
- }
- }
- return 64;
+ for (std::map<std::string,int>::iterator n = Config->maxbans.begin(); n != Config->MaxBans.end(); n++)
+ {
+ if (match(name,n->first->c_str()))
+ return atoi(n->second);
+ }
+ return 64;
}
void purge_empty_chans(userrec* u)
diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp
index e47cf9dda..477897b0b 100644
--- a/src/inspircd_io.cpp
+++ b/src/inspircd_io.cpp
@@ -59,6 +59,7 @@ ServerConfig::ServerConfig()
MaxWhoResults = 100;
debugging = 0;
LogLevel = DEFAULT;
+ maxbans.clear();
}
void ServerConfig::ClearStack()
@@ -417,6 +418,14 @@ void ServerConfig::Read(bool bail, userrec* user)
Config->ulines.push_back(ServName);
}
}
+ maxbans.clear();
+ char CM[MAXBUF],CM2[MAXBUF];
+ for (int count = 0; count < Config->ConfValueEnum("banlist",&Config->config_f); count++)
+ {
+ Config->ConfValue("banlist","chan",count,CM1,&Config->config_f);
+ Config->ConfValue("banlist","limit",count,CM2,&Config->config_f);
+ maxbans[CM1] = atoi(CM2);
+ }
ReadClassesAndTypes();
log(DEFAULT,"Reading K lines,Q lines and Z lines from config...");
read_xline_defaults();