]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Remove the last uses of localised fake clients. This removes a lot of allocations...
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 28 Aug 2007 13:48:28 +0000 (13:48 +0000)
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 28 Aug 2007 13:48:28 +0000 (13:48 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7943 e03df62e-2008-0410-955e-edbf42e46eb7

include/u_listmode.h
src/modules/m_banredirect.cpp
src/modules/m_chanprotect.cpp
src/modules/m_samode.cpp
src/modules/m_spanningtree/treesocket1.cpp
src/modules/m_spanningtree/treesocket2.cpp
src/modules/m_timedbans.cpp

index 24fbc9a4287b510139cbe857f9d4b0581938be1c..6b4fba8893b800547d0e8cff9f6494964c223d25 100644 (file)
@@ -186,22 +186,21 @@ class ListModeBase : public ModeHandler
                        std::deque<std::string> stackresult;
                        const char* mode_junk[MAXMODES+2];
                        mode_junk[0] = channel->name;
-                       userrec* n = new userrec(ServerInstance);
-                       n->SetFd(FD_MAGIC_NUMBER);
+
                        for (modelist::iterator it = el->begin(); it != el->end(); it++)
                        {
                                modestack.Push(this->GetModeChar(), assign(it->mask));
                        }
+
                        while (modestack.GetStackedLine(stackresult))
                        {
                                for (size_t j = 0; j < stackresult.size(); j++)
                                {
                                        mode_junk[j+1] = stackresult[j].c_str();
                                }
-                               ServerInstance->SendMode(mode_junk, stackresult.size() + 1, n);         
-                       }
 
-                       delete n;
+                               ServerInstance->SendMode(mode_junk, stackresult.size() + 1, ServerInstance->FakeClient);                
+                       }
                }
        }
 
index 9fa36b5169b045572bb69d8e98505180e05fc0aa..78cd24233144492b3eee95bc1e03eef75ebf6d74 100644 (file)
@@ -221,8 +221,6 @@ class ModuleBanRedirect : public Module
                                irc::modestacker modestack(false);
                                StringDeque stackresult;
                                const char* mode_junk[MAXMODES+2];
-                               userrec* myhorriblefakeuser = new userrec(ServerInstance);
-                               myhorriblefakeuser->SetFd(FD_MAGIC_NUMBER);
                                
                                mode_junk[0] = chan->name;
                                
@@ -244,10 +242,9 @@ class ModuleBanRedirect : public Module
                                                mode_junk[i+1] = stackresult[i].c_str();
                                        }
                                        
-                                       ServerInstance->SendMode(mode_junk, stackresult.size() + 1, myhorriblefakeuser);
+                                       ServerInstance->SendMode(mode_junk, stackresult.size() + 1, ServerInstance->FakeClient);
                                }
                                
-                               DELETE(myhorriblefakeuser);
                                DELETE(redirects);
                                chan->Shrink("banredirects");
                        }
index 0798e1947696503e5bc4f18687225e6e2773596c..8adeefb0b080be06e424edeefcda4b47401df0cd 100644 (file)
@@ -78,11 +78,10 @@ class FounderProtectBase
                CUList* cl = channel->GetUsers();
                std::string item = extend + std::string(channel->name);
                const char* mode_junk[MAXMODES+2];
-               userrec* n = new userrec(MyInstance);
-               n->SetFd(FD_MAGIC_NUMBER);
                mode_junk[0] = channel->name;
                irc::modestacker modestack(false);
                std::deque<std::string> stackresult;                            
+
                for (CUList::iterator i = cl->begin(); i != cl->end(); i++)
                {
                        if (i->first->GetExt(item, dummyptr))
@@ -97,10 +96,9 @@ class FounderProtectBase
                        {
                                mode_junk[j+1] = stackresult[j].c_str();
                        }
-                       MyInstance->SendMode(mode_junk, stackresult.size() + 1, n);
+                       MyInstance->SendMode(mode_junk, stackresult.size() + 1, MyInstance->FakeClient);
                }
                
-               delete n;
                unload_kludge = false;
        }
 
index b49efd35efbe2d2688a4033d014e2edd1150d3c0..0f5813edc04e44882dd8c68600e4feed28f1fcca 100644 (file)
@@ -31,11 +31,7 @@ class cmd_samode : public command_t
                /*
                 * Handles an SAMODE request. Notifies all +s users.
                 */
-
-               userrec* n = new userrec(ServerInstance);
-               n->SetFd(FD_MAGIC_NUMBER);
-               ServerInstance->SendMode(parameters,pcnt,n);
-               delete n;
+               ServerInstance->SendMode(parameters, pcnt, ServerInstance->FakeClient);
 
                if (ServerInstance->Modes->GetLastParse().length())
                {
index 1a753107447af688a4ed47412da5730d0a2563e2..872b1d72fb46e357ac83e713facf9aa721982b6f 100644 (file)
@@ -640,9 +640,8 @@ bool TreeSocket::ForceMode(const std::string &source, std::deque<std::string> &p
        }
        else
        {
-               /* FMODE from a server, create a fake user to receive mode feedback */
-               who = new userrec(this->Instance);
-               who->SetFd(FD_MAGIC_NUMBER);
+               /* FMODE from a server, use a fake user to receive mode feedback */
+               who = this->Instance->FakeClient;
                smode = true;      /* Setting this flag tells us we should free the userrec later */
                sourceserv = source;    /* Set sourceserv to the actual source string */
        }
@@ -714,10 +713,6 @@ bool TreeSocket::ForceMode(const std::string &source, std::deque<std::string> &p
        }
        /* If the TS is greater than ours, we drop the mode and dont pass it anywhere.
         */
-
-       if (smode)
-               DELETE(who);
-
        return true;
 }
 
@@ -896,8 +891,6 @@ bool TreeSocket::ForceJoin(const std::string &source, std::deque<std::string> &p
        {
                std::deque<std::string> stackresult;
                const char* mode_junk[MAXMODES+2];
-               userrec* n = new userrec(Instance);
-               n->SetFd(FD_MAGIC_NUMBER);
                mode_junk[0] = channel.c_str();
 
                while (modestack.GetStackedLine(stackresult))
@@ -906,10 +899,8 @@ bool TreeSocket::ForceJoin(const std::string &source, std::deque<std::string> &p
                        {
                                mode_junk[j+1] = stackresult[j].c_str();
                        }
-                       Instance->SendMode(mode_junk, stackresult.size() + 1, n);
+                       Instance->SendMode(mode_junk, stackresult.size() + 1, Instance->FakeClient);
                }
-
-               delete n;
        }
 
        return true;
index 9a52e63f29046e60614f48eafb2065da6288c43e..1c6761ea1e986bfd4a23438605005dbda64eda7a 100644 (file)
@@ -1480,11 +1480,7 @@ bool TreeSocket::ProcessLine(std::string &line)
                                                const char* modelist[MAXPARAMETERS];
                                                for (size_t i = 0; i < params.size(); i++)
                                                        modelist[i] = params[i].c_str();
-                                               userrec* fake = new userrec(Instance);
-                                               fake->SetFd(FD_MAGIC_NUMBER);
-                                               this->Instance->SendMode(modelist, params.size(), fake);
-
-                                               delete fake;
+                                               this->Instance->SendMode(modelist, params.size(), this->Instance->FakeClient);
                                                /* Hot potato! pass it on! */
                                                return Utils->DoOneToAllButSenderRaw(line,sourceserv,prefix,command,params);
                                        }
index 40f740922dd97f438b70aab1c6b3b07d4986b2c2..58dffbbe44be41c9493d81f32b13cef6b1dd1666 100644 (file)
@@ -161,22 +161,15 @@ class ModuleTimedBans : public Module
                                                setban[0] = i->channel.c_str();
                                                setban[1] = "-b";
                                                setban[2] = i->mask.c_str();
-                                               // kludge alert!
-                                               // ::SendMode expects a userrec* to send the numeric replies
-                                               // back to, so we create it a fake user that isnt in the user
-                                               // hash and set its descriptor to FD_MAGIC_NUMBER so the data
-                                               // falls into the abyss :p
-                                               userrec* temp = new userrec(ServerInstance);
-                                               temp->SetFd(FD_MAGIC_NUMBER);
-                                               /* FIX: Send mode remotely*/
+
+                                               /* Send mode remotely*/
                                                std::deque<std::string> n;
                                                n.push_back(setban[0]);
                                                n.push_back("-b");
                                                n.push_back(setban[2]);
-                                               ServerInstance->SendMode(setban,3,temp);
+                                               ServerInstance->SendMode(setban,3, ServerInstance->FakeClient);
                                                Event rmode((char *)&n, NULL, "send_mode");
                                                rmode.Send(ServerInstance);
-                                               DELETE(temp);
                                        }
                                        else
                                        {