- if ((!user) || (!chan)) {
- log(DEFAULT,"*** BUG *** TakeBan was given an invalid parameter");
- return 0;
- }
-
- log(DEBUG,"del_ban: %s %s",chan->name,user->nick);
- for (BanList::iterator i = chan->bans.begin(); i != chan->bans.end(); i++)
- {
- if (!strcasecmp(i->data,dest.c_str()))
- {
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnDelBan,OnDelBan(user,chan,dest));
- if (MOD_RESULT)
- return NULL;
- chan->bans.erase(i);
- return dest;
- }
- }
+ for (BanList::iterator i = channel->bans.begin(); i != channel->bans.end(); i++)
+ {
+ if (!strcasecmp(i->data.c_str(), parameter.c_str()))
+ {
+ return std::make_pair(true, i->data);
+ }
+ }
+ return std::make_pair(false, parameter);
+}
+
+std::string& ModeChannelBan::DelBan(User *user, std::string& dest, Channel *chan, int)
+{
+ if ((!user) || (!chan))
+ {
+ ServerInstance->Logs->Log("MODE",DEFAULT,"*** BUG *** TakeBan was given an invalid parameter");
+ dest = "";
+ return dest;
+ }
+
+ /* 'Clean' the mask, e.g. nick -> nick!*@* */
+ ModeParser::CleanMask(dest);
+
+ for (BanList::iterator i = chan->bans.begin(); i != chan->bans.end(); i++)
+ {
+ if (!strcasecmp(i->data.c_str(), dest.c_str()))
+ {
+ int MOD_RESULT = 0;
+ FOREACH_RESULT(I_OnDelBan,OnDelBan(user, chan, dest));
+ if (MOD_RESULT)
+ {
+ dest = "";
+ return dest;
+ }
+ chan->bans.erase(i);
+ return dest;
+ }
+ }