- cbanlist::iterator iter = cbans.begin();
-
- log(DEBUG, "m_cban.so: Ban on %s expired, removing...", iter->chname.c_str());
- WriteOpers("*** %li second CBAN on %s (%s) set %u seconds ago expired", iter->length, iter->chname.c_str(), iter->reason.c_str(), TIME - iter->set_on);
- cbans.erase(iter);
+ go_again = false;
+
+ for (cbanlist::iterator iter = cbans.begin(); iter != cbans.end(); iter++)
+ {
+ /* 0 == permanent, don't mess with them! -- w00t */
+ if (iter->length != 0)
+ {
+ if (iter->set_on + iter->length <= TIME)
+ {
+ log(DEBUG, "m_cban.so: Ban on %s expired, removing...", iter->chname.c_str());
+ WriteOpers("*** %li second CBAN on %s (%s) set %u seconds ago expired", iter->length, iter->chname.c_str(), iter->reason.c_str(), TIME - iter->set_on);
+ cbans.erase(iter);
+ go_again = true;
+ }
+ }
+
+ if (go_again == true)
+ break;
+ }