]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Cache channel max bans value to save an O(n) loop of match() on every ban (etc) add
[user/henk/code/inspircd.git] / src / inspircd.cpp
index efb842f60ac1e473241df1022bd8bd9c04e003ec..b75a91715c8ffeb613f4ab17d8b97d960402565e 100644 (file)
@@ -148,10 +148,18 @@ void InspIRCd::Rehash(int status)
        SI->RehashUsersAndChans();
        FOREACH_MOD_I(SI, I_OnGarbageCollect, OnGarbageCollect());
        SI->Config->Read(false,NULL);
+       SI->ResetMaxBans();
        SI->Res->Rehash();
        FOREACH_MOD_I(SI,I_OnRehash,OnRehash(NULL,""));
 }
 
+void InspIRCd::ResetMaxBans()
+{
+       for (chan_hash::const_iterator i = chanlist->begin(); i != chanlist->end(); i++)
+               i->second->ResetMaxBans();
+}
+
+
 /** Because hash_map doesnt free its buckets when we delete items (this is a 'feature')
  * we must occasionally rehash the hash (yes really).
  * We do this by copying the entries from the old hash to a new hash, causing all