]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/u_listmode.h
Don't check Q:Lines if server is enforcing a nick change (I forgot we had a way to...
[user/henk/code/inspircd.git] / include / u_listmode.h
index 301f5a92138ef6ebd14de8f77d735baf15ac3004..6c6e2ca28fbc63374a5e9c096e824eb390983c48 100644 (file)
@@ -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 = "";