diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/helperfuncs.cpp | 17 | ||||
-rw-r--r-- | src/inspircd_io.cpp | 9 |
2 files changed, 15 insertions, 11 deletions
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(); |