]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_messageflood.cpp
Test stuff to fix remote stats brokage
[user/henk/code/inspircd.git] / src / modules / m_messageflood.cpp
index be5dc68ae2db40deb942340ba72bd3f180cd8e06..012c95a8e8cfe89972c6c58df9e9beb0c419558b 100644 (file)
@@ -144,7 +144,7 @@ class MsgFlood : public ModeHandler
                                {
                                        if (!channel->GetExt("flood", f))
                                        {
-                                               parameter = ConvToStr(nlines) + ":" +ConvToStr(nsecs);
+                                               parameter = std::string(ban ? "*" : "") + ConvToStr(nlines) + ":" +ConvToStr(nsecs);
                                                floodsettings *f = new floodsettings(ban,nsecs,nlines);
                                                channel->Extend("flood",f);
                                                channel->SetMode('f', true);
@@ -153,11 +153,11 @@ class MsgFlood : public ModeHandler
                                        }
                                        else
                                        {
-                                               if (((nlines != f->lines) || (nsecs != f->secs)) && ((nsecs > 0) && (nlines > 0)))
+                                               if (((nlines != f->lines) || (nsecs != f->secs)) && ((nsecs > 0) && (nlines > 0)) || (ban != f->ban))
                                                {
                                                        delete f;
                                                        floodsettings *f = new floodsettings(ban,nsecs,nlines);
-                                                       parameter = ConvToStr(nlines) + ":" +ConvToStr(nsecs);
+                                                       parameter = std::string(ban ? "*" : "") + ConvToStr(nlines) + ":" +ConvToStr(nsecs);
                                                        channel->Shrink("flood");
                                                        channel->Extend("flood",f);
                                                        channel->SetModeParam('f', parameter.c_str(), true);
@@ -200,7 +200,8 @@ class ModuleMsgFlood : public Module
        {
                
                mf = new MsgFlood(ServerInstance);
-               ServerInstance->AddMode(mf, 'f');
+               if (!ServerInstance->AddMode(mf, 'f'))
+                       throw ModuleException("Could not add new modes!");
        }
        
        void ProcessMessages(userrec* user,chanrec* dest, const std::string &text)
@@ -235,7 +236,9 @@ class ModuleMsgFlood : public Module
                                                Event rmode((char *)&n, NULL, "send_mode");
                                                rmode.Send(ServerInstance);
                                        }
-                                       dest->ServerKickUser(user, "Channel flood triggered (mode +f)", true);
+                                       char kickmessage[MAXBUF];
+                                       snprintf(kickmessage, MAXBUF, "Channel flood triggered (limit is %d lines in %d secs)", f->lines, f->secs);
+                                       dest->ServerKickUser(user, kickmessage, true);
                                }
                        }
                }