X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fu_listmode.h;h=6c6e2ca28fbc63374a5e9c096e824eb390983c48;hb=66e76caaa09f5e7037590030ef14921359407a1a;hp=301f5a92138ef6ebd14de8f77d735baf15ac3004;hpb=415a2576ef2235f773a5ccdc1b3ebf1e6d3033a6;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/u_listmode.h b/include/u_listmode.h index 301f5a921..6c6e2ca28 100644 --- a/include/u_listmode.h +++ b/include/u_listmode.h @@ -168,7 +168,7 @@ class ListModeBase : public ModeHandler * See mode.h * @param channel The channel to remove all instances of the mode from */ - virtual void RemoveMode(Channel* channel) + virtual void RemoveMode(Channel* channel, irc::modestacker* stack) { modelist* el; channel->GetExt(infokey, el); @@ -181,9 +181,15 @@ class ListModeBase : public ModeHandler for (modelist::iterator it = el->begin(); it != el->end(); it++) { - modestack.Push(this->GetModeChar(), assign(it->mask)); + if (stack) + stack->Push(this->GetModeChar(), assign(it->mask)); + else + modestack.Push(this->GetModeChar(), assign(it->mask)); } + if (stack) + return; + while (modestack.GetStackedLine(stackresult)) { for (size_t j = 0; j < stackresult.size(); j++) @@ -198,7 +204,7 @@ class ListModeBase : public ModeHandler /** See mode.h */ - virtual void RemoveMode(User*) + virtual void RemoveMode(User*, irc::modestacker* stack) { /* Listmodes dont get set on users */ } @@ -317,7 +323,7 @@ class ListModeBase : public ModeHandler /* List is full, give subclass a chance to send a custom message */ if (!TellListTooLong(source, channel, parameter)) { - source->WriteServ("478 %s %s %s :Channel ban/ignore list is full", source->nick, channel->name, parameter.c_str()); + source->WriteNumeric(478, "%s %s %s :Channel ban/ignore list is full", source->nick, channel->name, parameter.c_str()); } parameter = "";