]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Use loopCall to protect OnUserKick rather than the triggerevents hack
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Mon, 20 Apr 2009 13:29:58 +0000 (13:29 +0000)
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Mon, 20 Apr 2009 13:29:58 +0000 (13:29 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11321 e03df62e-2008-0410-955e-edbf42e46eb7

include/channels.h
src/channels.cpp
src/modules/m_messageflood.cpp
src/modules/m_sakick.cpp
src/modules/m_spanningtree/main.cpp
src/modules/m_spanningtree/treesocket2.cpp

index 3bbcf067245eea1f0fb9b9bfec2193f2260bdd9d..dfee69dc066d1fcfa6fb8774e7c5bd9aa95fc2ab 100644 (file)
@@ -336,7 +336,7 @@ class CoreExport Channel : public Extensible
         * @return The number of users left on the channel. If this is zero
         * when the method returns, you MUST delete the Channel immediately!
         */
-       long ServerKickUser(User* user, const char* reason, bool triggerevents, const char* servername = NULL);
+       long ServerKickUser(User* user, const char* reason, const char* servername = NULL);
 
        /** Part a user from this channel with the given reason.
         * If the reason field is NULL, no reason will be sent.
index 99b118d0dc90e1cb15c0d8e100fa2af2cd0c2803..c1a5a59a3392c49e7a4d3c8bb4cf94e7cfd12f35 100644 (file)
@@ -592,7 +592,7 @@ long Channel::PartUser(User *user, std::string &reason)
        return this->GetUserCounter();
 }
 
-long Channel::ServerKickUser(User* user, const char* reason, bool triggerevents, const char* servername)
+long Channel::ServerKickUser(User* user, const char* reason, const char* servername)
 {
        bool silent = false;
 
@@ -611,10 +611,7 @@ long Channel::ServerKickUser(User* user, const char* reason, bool triggerevents,
        if (servername == NULL || *ServerInstance->Config->HideWhoisServer)
                servername = ServerInstance->Config->ServerName;
 
-       if (triggerevents)
-       {
-               FOREACH_MOD(I_OnUserKick,OnUserKick(NULL, user, this, reason, silent));
-       }
+       FOREACH_MOD(I_OnUserKick,OnUserKick(NULL, user, this, reason, silent));
 
        UCListIter i = user->chans.find(this);
        if (i != user->chans.end())
index f2082da3338c27a23a7c12ecf729aaece1fde295..fb9d2bbc2d036d91f85f5530a105469f96028e4f 100644 (file)
@@ -243,7 +243,7 @@ class ModuleMsgFlood : public Module
                                char kickmessage[MAXBUF];
                                snprintf(kickmessage, MAXBUF, "Channel flood triggered (limit is %d lines in %d secs)", f->lines, f->secs);
 
-                               if (!dest->ServerKickUser(user, kickmessage, true))
+                               if (!dest->ServerKickUser(user, kickmessage))
                                {
                                        delete dest;
                                }
index a9e7c3c0ee65e9b381e0045d3e6c2dea31b975ef..769aed7ce5e44c3c45c19e04753c36351983704e 100644 (file)
@@ -57,7 +57,7 @@ class CommandSakick : public Command
                         */
                        if (IS_LOCAL(dest))
                        {
-                               if (!channel->ServerKickUser(dest, reason, true, servername))
+                               if (!channel->ServerKickUser(dest, reason, servername))
                                        delete channel;
 
                                Channel* n = ServerInstance->FindChan(parameters[1]);
index 01048e4d1d3a65ff043b9751f30dd5fe0707bdee..b38929ad00b2b6a935aa5f80c36964cf7c0fdf0e 100644 (file)
@@ -677,6 +677,8 @@ void ModuleSpanningTree::OnUserPostNick(User* user, const std::string &oldnick)
 
 void ModuleSpanningTree::OnUserKick(User* source, User* user, Channel* chan, const std::string &reason, bool &silent)
 {
+       if (loopCall)
+               return;
        if ((source) && (IS_LOCAL(source)))
        {
                std::deque<std::string> params;
index 3e3fbd71e9e2e72b95c4a68f6c0dc7ba128ca999..b298ae3691f5d569fea20ae9d9f4277a347b0600 100644 (file)
@@ -451,7 +451,7 @@ bool TreeSocket::ProcessLine(std::string &line)
                                                                User* user = this->ServerInstance->FindNick(nick);
                                                                if (user)
                                                                {
-                                                                       if (!chan->ServerKickUser(user, params[2].c_str(), false, pf->GetName().c_str()))
+                                                                       if (!chan->ServerKickUser(user, params[2].c_str(), pf->GetName().c_str()))
                                                                                /* Yikes, the channels gone! */
                                                                                delete chan;
                                                                }