]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Replace std::deque with std::vector in spanningtree and related modules
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 2 Sep 2009 00:43:25 +0000 (00:43 +0000)
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 2 Sep 2009 00:43:25 +0000 (00:43 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11593 e03df62e-2008-0410-955e-edbf42e46eb7

60 files changed:
include/command_parse.h
include/hashcomp.h
include/mode.h
include/modules.h
include/protocol.h
include/u_listmode.h
src/command_parse.cpp
src/hashcomp.cpp
src/mode.cpp
src/modules.cpp
src/modules/extra/m_sqloper.cpp
src/modules/m_sasl.cpp
src/modules/m_spanningtree/addline.cpp
src/modules/m_spanningtree/admin.cpp
src/modules/m_spanningtree/capab.cpp
src/modules/m_spanningtree/delline.cpp
src/modules/m_spanningtree/encap.cpp
src/modules/m_spanningtree/fhost.cpp
src/modules/m_spanningtree/fjoin.cpp
src/modules/m_spanningtree/fmode.cpp
src/modules/m_spanningtree/fname.cpp
src/modules/m_spanningtree/ftopic.cpp
src/modules/m_spanningtree/kill.cpp
src/modules/m_spanningtree/main.cpp
src/modules/m_spanningtree/main.h
src/modules/m_spanningtree/metadata.cpp
src/modules/m_spanningtree/modules.cpp
src/modules/m_spanningtree/motd.cpp
src/modules/m_spanningtree/nickcollide.cpp
src/modules/m_spanningtree/operquit.cpp
src/modules/m_spanningtree/opertype.cpp
src/modules/m_spanningtree/override_admin.cpp
src/modules/m_spanningtree/override_map.cpp
src/modules/m_spanningtree/override_modules.cpp
src/modules/m_spanningtree/override_motd.cpp
src/modules/m_spanningtree/override_stats.cpp
src/modules/m_spanningtree/override_time.cpp
src/modules/m_spanningtree/override_whois.cpp
src/modules/m_spanningtree/ping.cpp
src/modules/m_spanningtree/pong.cpp
src/modules/m_spanningtree/postcommand.cpp
src/modules/m_spanningtree/privmsg.cpp
src/modules/m_spanningtree/protocolinterface.cpp
src/modules/m_spanningtree/protocolinterface.h
src/modules/m_spanningtree/push.cpp
src/modules/m_spanningtree/rsquit.cpp
src/modules/m_spanningtree/server.cpp
src/modules/m_spanningtree/stats.cpp
src/modules/m_spanningtree/svsjoin.cpp
src/modules/m_spanningtree/svsnick.cpp
src/modules/m_spanningtree/svspart.cpp
src/modules/m_spanningtree/time.cpp
src/modules/m_spanningtree/treesocket.h
src/modules/m_spanningtree/treesocket1.cpp
src/modules/m_spanningtree/treesocket2.cpp
src/modules/m_spanningtree/uid.cpp
src/modules/m_spanningtree/utils.cpp
src/modules/m_spanningtree/utils.h
src/modules/m_spanningtree/version.cpp
src/modules/m_spanningtree/whois.cpp

index f1d9d1b1c7b3e7e9cd11cc839aba61babeb2cba0..62f47bd2df8ef2f440e8f9e0393221ef142b9828 100644 (file)
@@ -203,7 +203,7 @@ class CoreExport CommandParser : public classbase
         */
        int TranslateUIDs(TranslateType to, const std::string &source, std::string &dest);
 
-       int TranslateUIDs(const std::deque<TranslateType> to, const std::deque<std::string> &source, std::string &dest);
+       int TranslateUIDs(const std::vector<TranslateType> to, const std::vector<std::string> &source, std::string &dest);
 };
 
 /** Command handler class for the RELOAD command.
index 536c42937d2493f1649c7cc2c1e510598ce3ef9b..c5d849529c48887d9c51ebe9a9ca8168681bff98 100644 (file)
@@ -304,7 +304,7 @@ namespace irc
                 * characters. As specified below, this function
                 * should be called in a loop until it returns zero,
                 * indicating there are no more modes to return.
-                * @param result The deque to populate. This will
+                * @param result The vector to populate. This will not
                 * be cleared before it is used.
                 * @param max_line_size The maximum size of the line
                 * to build, in characters, seperate to MAXMODES.
@@ -313,7 +313,16 @@ namespace irc
                 * returns 0, in case there are multiple lines of
                 * mode changes to be obtained.
                 */
-               int GetStackedLine(std::deque<std::string> &result, int max_line_size = 360);
+               int GetStackedLine(std::vector<std::string> &result, int max_line_size = 360);
+
+               /** deprecated compatability interface - TODO remove */
+               int GetStackedLine(std::deque<std::string> &result, int max_line_size = 360) {
+                       std::vector<std::string> r;
+                       int n = GetStackedLine(r, max_line_size);
+                       result.clear();
+                       result.insert(result.end(), r.begin(), r.end());
+                       return n;
+               }
        };
 
        /** irc::tokenstream reads a string formatted as per RFC1459 and RFC2812.
index 280284bfa8c77b775f2e6009dfacf0a758ba1857..e80455acc6a8c7635c7743b6678e043e19c861c2 100644 (file)
@@ -445,8 +445,8 @@ class CoreExport ModeParser : public classbase
         * Use GetLastParse() to get this value, to be used for  display purposes.
         */
        std::string LastParse;
-       std::deque<std::string> LastParseParams;
-       std::deque<TranslateType> LastParseTranslate;
+       std::vector<std::string> LastParseParams;
+       std::vector<TranslateType> LastParseTranslate;
 
        unsigned int sent[256];
 
@@ -488,8 +488,8 @@ class CoreExport ModeParser : public classbase
         * @return Last parsed string, as seen by users.
         */
        const std::string& GetLastParse();
-       const std::deque<std::string>& GetLastParseParams() { return LastParseParams; }
-       const std::deque<TranslateType>& GetLastParseTranslate() { return LastParseTranslate; }
+       const std::vector<std::string>& GetLastParseParams() { return LastParseParams; }
+       const std::vector<TranslateType>& GetLastParseTranslate() { return LastParseTranslate; }
        /** Add a mode to the mode parser.
         * @return True if the mode was successfully added.
         */
index f6678e93187c010c71345ed0962fad149b7d468f..21e4760897f234045690980735f169f3c88b6287 100644 (file)
@@ -776,7 +776,7 @@ class CoreExport Module : public Extensible
         * @param text The actual modes and their parameters if any
         * @param translate The translation types of the mode parameters
         */
-       virtual void OnMode(User* user, void* dest, int target_type, const std::deque<std::string> &text, const std::deque<TranslateType> &translate);
+       virtual void OnMode(User* user, void* dest, int target_type, const std::vector<std::string> &text, const std::vector<TranslateType> &translate);
 
        /** Allows modules to alter or create server descriptions
         * Whenever a module requires a server description, for example for display in
@@ -885,7 +885,7 @@ class CoreExport Module : public Extensible
         * @param modeline The modes and parameters to be sent
         * @param translate The translation types of the mode parameters
         */
-       virtual void ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const std::deque<std::string> &modeline, const std::deque<TranslateType> &translate);
+       virtual void ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const std::vector<std::string> &modeline, const std::vector<TranslateType> &translate);
 
        /** Implemented by modules which provide the ability to link servers.
         * These modules will implement this method, which allows metadata (extra data added to
index 60fcf4df283e45ce55c384b03b7cd0af7e653f36..49288fd3b0eefbf18fcbfb80c6b50e6356126ff9 100644 (file)
@@ -19,7 +19,7 @@
 class InspIRCd;
 class User;
 
-typedef std::deque<std::string> parameterlist;
+typedef std::vector<std::string> parameterlist;
 
 class ProtoServer
 {
@@ -68,7 +68,7 @@ class ProtocolInterface : public Extensible
         * @param target The channel name or user to send mode changes for.
         * @param The mode changes to send.
         */
-       virtual void SendMode(const std::string &target, const parameterlist &modedata, const std::deque<TranslateType> &translate) { }
+       virtual void SendMode(const std::string &target, const parameterlist &modedata, const std::vector<TranslateType> &translate) { }
 
        /** Convenience function, string wrapper around the above.
          */
@@ -76,7 +76,7 @@ class ProtocolInterface : public Extensible
        {
                irc::spacesepstream x(modeline);
                parameterlist n;
-               std::deque<TranslateType> types;
+               std::vector<TranslateType> types;
                std::string v;
                while (x.GetToken(v))
                {
index eb3cf18b7e2694c4c9d3ecae59792a2735fad226..0a2c25710568235ea65fc90211f25c64ef0456fe 100644 (file)
@@ -200,9 +200,6 @@ class ListModeBase : public ModeHandler
                if (el)
                {
                        irc::modestacker modestack(ServerInstance, false);
-                       std::deque<std::string> stackresult;
-                       std::vector<std::string> mode_junk;
-                       mode_junk.push_back(channel->name);
 
                        for (modelist::iterator it = el->begin(); it != el->end(); it++)
                        {
@@ -215,11 +212,13 @@ class ListModeBase : public ModeHandler
                        if (stack)
                                return;
 
+                       std::vector<std::string> stackresult;
+                       stackresult.push_back(channel->name);
                        while (modestack.GetStackedLine(stackresult))
                        {
-                               mode_junk.insert(mode_junk.end(), stackresult.begin(), stackresult.end());
-                               ServerInstance->SendMode(mode_junk, ServerInstance->FakeClient);
-                               mode_junk.erase(mode_junk.begin() + 1, mode_junk.end());
+                               ServerInstance->SendMode(stackresult, ServerInstance->FakeClient);
+                               stackresult.clear();
+                               stackresult.push_back(channel->name);
                        }
                }
        }
@@ -419,8 +418,8 @@ class ListModeBase : public ModeHandler
                modelist* mlist;
                chan->GetExt(infokey, mlist);
                irc::modestacker modestack(ServerInstance, true);
-               std::deque<std::string> stackresult;
-               std::deque<TranslateType> types;
+               std::vector<std::string> stackresult;
+               std::vector<TranslateType> types;
                types.push_back(TR_TEXT);
                if (mlist)
                {
@@ -433,6 +432,7 @@ class ListModeBase : public ModeHandler
                {
                        types.assign(stackresult.size(), this->GetTranslateType());
                        proto->ProtoSendMode(opaque, TYPE_CHANNEL, chan, stackresult, types);
+                       stackresult.clear();
                }
        }
 
index a76ca2d4f6a5358663e57dfb94f0951069601c7d..b446d2b9af9224a8e1f6effc686772087443ab4c 100644 (file)
@@ -607,10 +607,10 @@ void CommandParser::SetupCommandTable()
                this->CreateCommand(new CommandReload(ServerInstance));
 }
 
-int CommandParser::TranslateUIDs(const std::deque<TranslateType> to, const std::deque<std::string> &source, std::string &dest)
+int CommandParser::TranslateUIDs(const std::vector<TranslateType> to, const std::vector<std::string> &source, std::string &dest)
 {
-       std::deque<std::string>::const_iterator items = source.begin();
-       std::deque<TranslateType>::const_iterator types = to.begin();
+       std::vector<std::string>::const_iterator items = source.begin();
+       std::vector<TranslateType>::const_iterator types = to.begin();
        User* user = NULL;
        int translations = 0;
        dest.clear();
index 6c0ce82b852a62cecb7bf304fdf37bf4eba31de5..04c24418c5424f7d0ac620ace63bf4fa4d4f2079 100644 (file)
@@ -343,26 +343,26 @@ void irc::modestacker::PushMinus()
        this->Push('-',"");
 }
 
-int irc::modestacker::GetStackedLine(std::deque<std::string> &result, int max_line_size)
+int irc::modestacker::GetStackedLine(std::vector<std::string> &result, int max_line_size)
 {
        if (sequence.empty())
        {
-               result.clear();
                return 0;
        }
 
-       int n = 0;
+       unsigned int n = 0;
        int size = 1; /* Account for initial +/- char */
        int nextsize = 0;
-       result.clear();
-       result.push_back(adding ? "+" : "-");
+       int start = result.size();
+       std::string modeline = adding ? "+" : "-";
+       result.push_back(modeline);
 
        if (sequence.size() > 1)
                nextsize = sequence[1].length() + 2;
 
-       while (!sequence[0].empty() && (sequence.size() > 1) && (result.size() < ServerInstance->Config->Limits.MaxModes) && ((size + nextsize) < max_line_size))
+       while (!sequence[0].empty() && (sequence.size() > 1) && (n < ServerInstance->Config->Limits.MaxModes) && ((size + nextsize) < max_line_size))
        {
-               result[0] += *(sequence[0].begin());
+               modeline += *(sequence[0].begin());
                if (!sequence[1].empty())
                {
                        result.push_back(sequence[1]);
@@ -376,6 +376,7 @@ int irc::modestacker::GetStackedLine(std::deque<std::string> &result, int max_li
 
                n++;
        }
+       result[start] = modeline;
 
        return n;
 }
index 78993caad8799a76d1d70e968a4e83a7908701ca..947f3c4fb53a5f69af8ee459044bc6a49d522e98 100644 (file)
@@ -513,6 +513,7 @@ void ModeParser::Process(const std::vector<std::string>& parameters, User *user,
                unsigned int parameter_counter = 2; /* Index of first parameter */
                unsigned int parameter_count = 0;
                bool last_successful_state_change = false;
+               LastParseParams.push_back(output_sequence);
                LastParseTranslate.push_back(TR_TEXT);
 
                /* A mode sequence that doesnt start with + or -. Assume +. - Thanks for the suggestion spike (bug#132) */
@@ -762,7 +763,7 @@ void ModeParser::Process(const std::vector<std::string>& parameters, User *user,
                /* Was there at least one valid mode in the sequence? */
                if (!output_sequence.empty())
                {
-                       LastParseParams.push_front(output_sequence);
+                       LastParseParams[0] = output_sequence;
                        if (!user)
                        {
                                if (type == MODETYPE_CHANNEL)
index ab8ff37d4d693aee4b3c131c9ee175cefd79d2fd..aae65e816db5ea39edc1a0bfd88caf5432e37000 100644 (file)
@@ -118,7 +118,7 @@ void                Module::OnPreRehash(User*, const std::string&) { }
 void           Module::OnModuleRehash(User*, const std::string&) { }
 void           Module::OnRehash(User*) { }
 int            Module::OnUserPreJoin(User*, Channel*, const char*, std::string&, const std::string&) { return 0; }
-void           Module::OnMode(User*, void*, int, const std::deque<std::string>&, const std::deque<TranslateType>&) { }
+void           Module::OnMode(User*, void*, int, const std::vector<std::string>&, const std::vector<TranslateType>&) { }
 Version                Module::GetVersion() { return Version("Misconfigured", VF_VENDOR, -1); }
 void           Module::OnOper(User*, const std::string&) { }
 void           Module::OnPostOper(User*, const std::string&, const std::string &) { }
@@ -172,7 +172,7 @@ void                Module::OnPostLocalTopicChange(User*, Channel*, const std::string&) { }
 void           Module::OnGetServerDescription(const std::string&, std::string&) { }
 void           Module::OnSyncUser(User*, Module*, void*) { }
 void           Module::OnSyncChannel(Channel*, Module*, void*) { }
-void           Module::ProtoSendMode(void*, TargetTypeFlags, void*, const std::deque<std::string>&, const std::deque<TranslateType>&) { }
+void           Module::ProtoSendMode(void*, TargetTypeFlags, void*, const std::vector<std::string>&, const std::vector<TranslateType>&) { }
 void           Module::OnSyncChannelMetaData(Channel*, Module*, void*, const std::string&, bool) { }
 void           Module::OnSyncUserMetaData(User*, Module*, void*, const std::string&, bool) { }
 void           Module::OnSyncOtherMetaData(Module*, void*, bool) { }
index e898165a090259b1bd624fa9a5e9c237a9d34a74..52a73eba90963d8ea121f2ede0ea848a79a6e399 100644 (file)
@@ -29,7 +29,7 @@ class ModuleSQLOper : public Module
        irc::string hashtype;
        hashymodules hashers;
        bool diduseiface;
-       std::deque<std::string> names;
+       parameterlist names;
 
 public:
        ModuleSQLOper(InspIRCd* Me)
index 7867c245d3520329943a4cf2b3ac84f1db1a0201..5241a14e57c085c5a58d3e9fe10eb700d3ea8306 100644 (file)
@@ -40,7 +40,7 @@ class SaslAuthenticator : public classbase
        {
                this->user->Extend("sasl_authenticator", this);
 
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back("*");
                params.push_back("SASL");
                params.push_back(user->uuid);
@@ -63,7 +63,7 @@ class SaslAuthenticator : public classbase
        }
 
        /* checks for and deals with a state change. */
-       SaslState ProcessInboundMessage(std::deque<std::string> &msg)
+       SaslState ProcessInboundMessage(parameterlist &msg)
        {
                switch (this->state)
                {
@@ -106,7 +106,7 @@ class SaslAuthenticator : public classbase
                if (this->state != SASL_COMM)
                        return true;
 
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back("*");
                params.push_back("SASL");
                params.push_back(this->user->uuid);
@@ -258,7 +258,7 @@ class ModuleSASL : public Module
 
                if (ev->GetEventID() == "encap_received")
                {
-                       std::deque<std::string>* parameters = (std::deque<std::string>*)ev->GetData();
+                       parameterlist* parameters = (parameterlist*)ev->GetData();
 
                        if ((*parameters)[1] != "SASL")
                                return;
index 304a230010817a69ea675ba0e2efe28c3ad067b4..858abe3a6445d45d5a2bf49f6cfd9526d159e3e5 100644 (file)
@@ -20,7 +20,7 @@
 
 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::AddLine(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::AddLine(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 6)
        {
index d58af5caf0448fb842df3b7bc9bc163abe0a8f28..133da928ba08569c3e4df5a99901e44bd1b1a5bb 100644 (file)
@@ -21,7 +21,7 @@
 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
 /** remote ADMIN. leet, huh? */
-bool TreeSocket::Admin(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::Admin(const std::string &prefix, parameterlist &params)
 {
        if (params.size() > 0)
        {
@@ -32,7 +32,7 @@ bool TreeSocket::Admin(const std::string &prefix, std::deque<std::string> &param
                        User* source = this->ServerInstance->FindNick(prefix);
                        if (source)
                        {
-                               std::deque<std::string> par;
+                               parameterlist par;
                                par.push_back(prefix);
                                par.push_back("");
                                par[1] = std::string("::")+ServerInstance->Config->ServerName+" 256 "+source->nick+" :Administrative info for "+ServerInstance->Config->ServerName;
index 7c37e67eb25b897392df728d31a8080cdac5bbaa..a1980790f2c9a688c2961f38db94bc20cedbc8ce 100644 (file)
@@ -129,7 +129,7 @@ std::string TreeSocket::ListDifference(const std::string &one, const std::string
        return result;
 }
 
-bool TreeSocket::Capab(const std::deque<std::string> &params)
+bool TreeSocket::Capab(const parameterlist &params)
 {
        if (params.size() < 1)
        {
index fc0a51ce899d47beaebeb6410989d45e73926803..5b01e3e983ff28cb5ee111c9fb1b3e9efb743201 100644 (file)
@@ -21,7 +21,7 @@
 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
 
-bool TreeSocket::DelLine(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::DelLine(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 2)
                return true;
index c1f8081c898328be4ecec0c33494126a746cf1ed..c56f8dc74f0437f9ee9f45c3c140f992cd6764f2 100644 (file)
@@ -23,7 +23,7 @@
 
 
 /** remote MOTD. leet, huh? */
-bool TreeSocket::Encap(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::Encap(const std::string &prefix, parameterlist &params)
 {
        if (params.size() > 1)
        {
index f2d5a38880148a6f90b374f51037e14855805d3d..1595b98aa74beeaa2180655d6f6cb70e2568ab4c 100644 (file)
@@ -21,7 +21,7 @@
 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
 
-bool TreeSocket::ChangeHost(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::ChangeHost(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 1)
                return true;
index 4367186b9e5ccf2fba4cd776cf3e63380c10385a..2c3606db173295d748268e45388f69553596b064 100644 (file)
@@ -22,7 +22,7 @@
 
 
 /** FJOIN, almost identical to TS6 SJOIN, except for nicklist handling. */
-bool TreeSocket::ForceJoin(const std::string &source, std::deque<std::string> &params)
+bool TreeSocket::ForceJoin(const std::string &source, parameterlist &params)
 {
        /* 1.1 FJOIN works as follows:
         *
@@ -97,7 +97,7 @@ bool TreeSocket::ForceJoin(const std::string &source, std::deque<std::string> &p
                {
                        /* Our TS greater than theirs, clear all our modes from the channel, accept theirs. */
                        ServerInstance->SNO->WriteToSnoMask('d', "Removing our modes, accepting remote");
-                       std::deque<std::string> param_list;
+                       parameterlist param_list;
                        if (Utils->AnnounceTSChange && chan)
                                chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :TS for %s changed from %lu to %lu", chan->name.c_str(), chan->name.c_str(), (unsigned long) ourTS, (unsigned long) TS);
                        ourTS = TS;
@@ -181,22 +181,20 @@ bool TreeSocket::ForceJoin(const std::string &source, std::deque<std::string> &p
        /* Flush mode stacker if we lost the FJOIN or had equal TS */
        if (apply_other_sides_modes)
        {
-               std::deque<std::string> stackresult;
-               std::vector<std::string> mode_junk;
-               mode_junk.push_back(channel);
+               parameterlist stackresult;
+               stackresult.push_back(channel);
 
                while (modestack.GetStackedLine(stackresult))
                {
-                       mode_junk.insert(mode_junk.end(), stackresult.begin(), stackresult.end());
-                       ServerInstance->SendMode(mode_junk, Utils->ServerUser);
-                       mode_junk.erase(mode_junk.begin() + 1, mode_junk.end());
+                       ServerInstance->SendMode(stackresult, Utils->ServerUser);
+                       stackresult.erase(stackresult.begin() + 1, stackresult.end());
                }
        }
 
        return true;
 }
 
-bool TreeSocket::RemoveStatus(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::RemoveStatus(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 1)
                return true;
@@ -206,9 +204,8 @@ bool TreeSocket::RemoveStatus(const std::string &prefix, std::deque<std::string>
        if (c)
        {
                irc::modestacker stack(ServerInstance, false);
-               std::deque<std::string> stackresult;
-               std::vector<std::string> mode_junk;
-               mode_junk.push_back(c->name);
+               parameterlist stackresult;
+               stackresult.push_back(c->name);
 
                for (char modeletter = 'A'; modeletter <= 'z'; ++modeletter)
                {
@@ -224,9 +221,8 @@ bool TreeSocket::RemoveStatus(const std::string &prefix, std::deque<std::string>
 
                while (stack.GetStackedLine(stackresult))
                {
-                       mode_junk.insert(mode_junk.end(), stackresult.begin(), stackresult.end());
-                       ServerInstance->SendMode(mode_junk, Utils->ServerUser);
-                       mode_junk.erase(mode_junk.begin() + 1, mode_junk.end());
+                       ServerInstance->SendMode(stackresult, Utils->ServerUser);
+                       stackresult.erase(stackresult.begin() + 1, stackresult.end());
                }
        }
        return true;
index 880f250860a2d120f4524764bfe98f3c99571db5..3421f8045c4be52ed88817dbdc3dcc883f918576 100644 (file)
@@ -22,7 +22,7 @@
 
 
 /** FMODE command - server mode with timestamp checks */
-bool TreeSocket::ForceMode(const std::string &source, std::deque<std::string> &params)
+bool TreeSocket::ForceMode(const std::string &source, parameterlist &params)
 {
        /* Chances are this is a 1.0 FMODE without TS */
        if (params.size() < 3)
index 656b6836319b5024691109f8c6ec96278e80329a..a83591a4f410de5a49e458257502d715df4934a4 100644 (file)
@@ -21,7 +21,7 @@
 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
 
-bool TreeSocket::ChangeName(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::ChangeName(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 1)
                return true;
index 8ba5f90ab177e43f47850b694d60684adad1eb84..34e97dd11815367c0aea279d52b273ff6a86413e 100644 (file)
@@ -22,7 +22,7 @@
 
 
 /** FTOPIC command */
-bool TreeSocket::ForceTopic(const std::string &source, std::deque<std::string> &params)
+bool TreeSocket::ForceTopic(const std::string &source, parameterlist &params)
 {
        if (params.size() != 4)
                return true;
index 79852422110298d6a0d5aab9582f4303343ac578..c2026d0bb4d8fcca9c1660edfb4e6b43f1c28521 100644 (file)
@@ -23,7 +23,7 @@
 
 
 
-bool TreeSocket::RemoteKill(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::RemoteKill(const std::string &prefix, parameterlist &params)
 {
        if (params.size() != 2)
                return true;
index 28473fdf9930edc25b81ce874f445c66ff2f3d61..2e92f83741a2cb75e29120322a7d89a6f33e8104 100644 (file)
@@ -442,7 +442,7 @@ void ModuleSpanningTree::OnUserInvite(User* source,User* dest,Channel* channel,
 {
        if (IS_LOCAL(source))
        {
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(dest->uuid);
                params.push_back(channel->name);
                params.push_back(ConvToStr(expiry));
@@ -452,7 +452,7 @@ void ModuleSpanningTree::OnUserInvite(User* source,User* dest,Channel* channel,
 
 void ModuleSpanningTree::OnPostLocalTopicChange(User* user, Channel* chan, const std::string &topic)
 {
-       std::deque<std::string> params;
+       parameterlist params;
        params.push_back(chan->name);
        params.push_back(":"+topic);
        Utils->DoOneToMany(user->uuid,"TOPIC",params);
@@ -462,7 +462,7 @@ void ModuleSpanningTree::OnWallops(User* user, const std::string &text)
 {
        if (IS_LOCAL(user))
        {
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(":"+text);
                Utils->DoOneToMany(user->uuid,"WALLOPS",params);
        }
@@ -479,8 +479,7 @@ void ModuleSpanningTree::OnUserNotice(User* user, void* dest, int target_type, c
                User* d = (User*)dest;
                if ((d->GetFd() < 0) && (IS_LOCAL(user)))
                {
-                       std::deque<std::string> params;
-                       params.clear();
+                       parameterlist params;
                        params.push_back(d->uuid);
                        params.push_back(":"+text);
                        Utils->DoOneToOne(user->uuid,"NOTICE",params,d->server);
@@ -512,7 +511,7 @@ void ModuleSpanningTree::OnUserNotice(User* user, void* dest, int target_type, c
                if (IS_LOCAL(user))
                {
                        char* target = (char*)dest;
-                       std::deque<std::string> par;
+                       parameterlist par;
                        par.push_back(target);
                        par.push_back(":"+text);
                        Utils->DoOneToMany(user->uuid,"NOTICE",par);
@@ -533,8 +532,7 @@ void ModuleSpanningTree::OnUserMessage(User* user, void* dest, int target_type,
                User* d = (User*)dest;
                if ((d->GetFd() < 0) && (IS_LOCAL(user)))
                {
-                       std::deque<std::string> params;
-                       params.clear();
+                       parameterlist params;
                        params.push_back(d->uuid);
                        params.push_back(":"+text);
                        Utils->DoOneToOne(user->uuid,"PRIVMSG",params,d->server);
@@ -566,7 +564,7 @@ void ModuleSpanningTree::OnUserMessage(User* user, void* dest, int target_type,
                if (IS_LOCAL(user))
                {
                        char* target = (char*)dest;
-                       std::deque<std::string> par;
+                       parameterlist par;
                        par.push_back(target);
                        par.push_back(":"+text);
                        Utils->DoOneToMany(user->uuid,"PRIVMSG",par);
@@ -586,7 +584,7 @@ void ModuleSpanningTree::OnUserJoin(User* user, Channel* channel, bool sync, boo
        // Only do this for local users
        if (IS_LOCAL(user))
        {
-               std::deque<std::string> params;
+               parameterlist params;
                // set up their permissions and the channel TS with FJOIN.
                // All users are FJOINed now, because a module may specify
                // new joining permissions for the user.
@@ -603,7 +601,7 @@ int ModuleSpanningTree::OnChangeLocalUserHost(User* user, const std::string &new
        if (user->registered != REG_ALL)
                return 0;
 
-       std::deque<std::string> params;
+       parameterlist params;
        params.push_back(newhost);
        Utils->DoOneToMany(user->uuid,"FHOST",params);
        return 0;
@@ -615,7 +613,7 @@ void ModuleSpanningTree::OnChangeName(User* user, const std::string &gecos)
        if (user->registered != REG_ALL)
                return;
 
-       std::deque<std::string> params;
+       parameterlist params;
        params.push_back(gecos);
        Utils->DoOneToMany(user->uuid,"FNAME",params);
 }
@@ -624,7 +622,7 @@ void ModuleSpanningTree::OnUserPart(User* user, Channel* channel,  std::string &
 {
        if (IS_LOCAL(user))
        {
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(channel->name);
                if (!partmessage.empty())
                        params.push_back(":"+partmessage);
@@ -636,7 +634,7 @@ void ModuleSpanningTree::OnUserQuit(User* user, const std::string &reason, const
 {
        if ((IS_LOCAL(user)) && (user->registered == REG_ALL))
        {
-               std::deque<std::string> params;
+               parameterlist params;
 
                if (oper_message != reason)
                {
@@ -660,7 +658,7 @@ void ModuleSpanningTree::OnUserPostNick(User* user, const std::string &oldnick)
 {
        if (IS_LOCAL(user))
        {
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(user->nick);
 
                /** IMPORTANT: We don't update the TS if the oldnick is just a case change of the newnick!
@@ -675,7 +673,7 @@ void ModuleSpanningTree::OnUserPostNick(User* user, const std::string &oldnick)
 
 void ModuleSpanningTree::OnUserKick(User* source, User* user, Channel* chan, const std::string &reason, bool &silent)
 {
-       std::deque<std::string> params;
+       parameterlist params;
        params.push_back(chan->name);
        params.push_back(user->uuid);
        params.push_back(":"+reason);
@@ -694,7 +692,7 @@ void ModuleSpanningTree::OnRemoteKill(User* source, User* dest, const std::strin
        if (!IS_LOCAL(source))
                return; // Only start routing if we're origin.
 
-       std::deque<std::string> params;
+       parameterlist params;
        params.push_back(":"+reason);
        Utils->DoOneToMany(dest->uuid,"OPERQUIT",params);
        params.clear();
@@ -711,7 +709,7 @@ void ModuleSpanningTree::OnPreRehash(User* user, const std::string &parameter)
        // Send out to other servers
        if (!parameter.empty() && parameter[0] != '-')
        {
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(parameter);
                Utils->DoOneToAllButSender(user ? user->uuid : ServerInstance->Config->GetSID(), "REHASH", params, user ? user->server : ServerInstance->Config->ServerName);
        }
@@ -758,7 +756,7 @@ void ModuleSpanningTree::OnOper(User* user, const std::string &opertype)
 {
        if (IS_LOCAL(user))
        {
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(opertype);
                Utils->DoOneToMany(user->uuid,"OPERTYPE",params);
        }
@@ -772,7 +770,7 @@ void ModuleSpanningTree::OnAddLine(User* user, XLine *x)
        char data[MAXBUF];
        snprintf(data,MAXBUF,"%s %s %s %lu %lu :%s", x->type.c_str(), x->Displayable(),
        ServerInstance->Config->ServerName, (unsigned long)x->set_time, (unsigned long)x->duration, x->reason);
-       std::deque<std::string> params;
+       parameterlist params;
        params.push_back(data);
 
        if (!user)
@@ -794,7 +792,7 @@ void ModuleSpanningTree::OnDelLine(User* user, XLine *x)
 
        char data[MAXBUF];
        snprintf(data,MAXBUF,"%s %s", x->type.c_str(), x->Displayable());
-       std::deque<std::string> params;
+       parameterlist params;
        params.push_back(data);
 
        if (!user)
@@ -809,11 +807,11 @@ void ModuleSpanningTree::OnDelLine(User* user, XLine *x)
        }
 }
 
-void ModuleSpanningTree::OnMode(User* user, void* dest, int target_type, const std::deque<std::string> &text, const std::deque<TranslateType> &translate)
+void ModuleSpanningTree::OnMode(User* user, void* dest, int target_type, const parameterlist &text, const std::vector<TranslateType> &translate)
 {
        if ((IS_LOCAL(user)) && (user->registered == REG_ALL))
        {
-               std::deque<std::string> params;
+               parameterlist params;
                std::string command;
                std::string output_text;
 
@@ -845,13 +843,13 @@ int ModuleSpanningTree::OnSetAway(User* user, const std::string &awaymsg)
        {
                if (awaymsg.empty())
                {
-                       std::deque<std::string> params;
+                       parameterlist params;
                        params.clear();
                        Utils->DoOneToMany(user->uuid,"AWAY",params);
                }
                else
                {
-                       std::deque<std::string> params;
+                       parameterlist params;
                        params.push_back(":" + awaymsg);
                        Utils->DoOneToMany(user->uuid,"AWAY",params);
                }
@@ -860,7 +858,7 @@ int ModuleSpanningTree::OnSetAway(User* user, const std::string &awaymsg)
        return 0;
 }
 
-void ModuleSpanningTree::ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const std::deque<std::string> &modeline, const std::deque<TranslateType> &translate)
+void ModuleSpanningTree::ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const parameterlist &modeline, const std::vector<TranslateType> &translate)
 {
        TreeSocket* s = (TreeSocket*)opaque;
        std::string output_text;
index 4e7a8a426dd917ccc5e30a0bcb845540c23716d1..375d99b1489958b6d3c6041eb17be148b6234201 100644 (file)
@@ -180,10 +180,10 @@ class ModuleSpanningTree : public Module
        void OnLine(User* source, const std::string &host, bool adding, char linetype, long duration, const std::string &reason);
        virtual void OnAddLine(User *u, XLine *x);
        virtual void OnDelLine(User *u, XLine *x);
-       virtual void OnMode(User* user, void* dest, int target_type, const std::deque<std::string> &text, const std::deque<TranslateType> &translate);
+       virtual void OnMode(User* user, void* dest, int target_type, const std::vector<std::string> &text, const std::vector<TranslateType> &translate);
        virtual int OnStats(char statschar, User* user, string_list &results);
        virtual int OnSetAway(User* user, const std::string &awaymsg);
-       virtual void ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const std::deque<std::string> &modeline, const std::deque<TranslateType> &translate);
+       virtual void ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const std::vector<std::string> &modeline, const std::vector<TranslateType> &translate);
        virtual void ProtoSendMetaData(void* opaque, TargetTypeFlags target_type, void* target, const std::string &extname, const std::string &extdata);
        virtual void OnEvent(Event* event);
        virtual void OnLoadModule(Module* mod,const std::string &name);
index 72aff001279b4db4e72b648ea35acd1f90dfda0a..eece14b0c08cd98a4a102396b31757f77eb5744e 100644 (file)
@@ -21,7 +21,7 @@
 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
 
-bool TreeSocket::MetaData(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::MetaData(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 2)
                return true;
index 70709eb40890976192fedc6446f776e121818f8f..6c91327946d126261abb55f8d4bcf669cdc0f3df 100644 (file)
@@ -21,7 +21,7 @@
 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
 
-bool TreeSocket::Modules(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::Modules(const std::string &prefix, parameterlist &params)
 {
        if (params.empty())
                return true;
@@ -34,7 +34,7 @@ bool TreeSocket::Modules(const std::string &prefix, std::deque<std::string> &par
        }
 
        char strbuf[MAXBUF];
-       std::deque<std::string> par;
+       parameterlist par;
        par.push_back(prefix);
        par.push_back("");
 
index 66de93e187e9e103863a9628a3e8b8fbcb89049e..e42c53152f65c46666aac97e021135522359c7d6 100644 (file)
@@ -23,7 +23,7 @@
 
 
 /** remote MOTD. leet, huh? */
-bool TreeSocket::Motd(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::Motd(const std::string &prefix, parameterlist &params)
 {
        if (params.size() > 0)
        {
@@ -35,7 +35,7 @@ bool TreeSocket::Motd(const std::string &prefix, std::deque<std::string> &params
 
                        if (source)
                        {
-                               std::deque<std::string> par;
+                               parameterlist par;
                                par.push_back(prefix);
                                par.push_back("");
 
index 9661200db7f73215dc7dfc3c14a36f5e29748d06..ba83b62db3e59b3916526ea886397c970a27af6a 100644 (file)
@@ -102,7 +102,7 @@ int TreeSocket::DoCollision(User *u, time_t remotets, const std::string &remotei
                 * Local-side nick needs to change. Just in case we are hub, and
                 * this "local" nick is actually behind us, send an SVSNICK out.
                 */
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(u->uuid);
                params.push_back(u->uuid);
                params.push_back(ConvToStr(u->age));
index bbaa2cb628f110cedbbca75f849e7699f3d3d58d..a71f73da7c85e8dfa8c7d83d4b26d88843c26c9a 100644 (file)
@@ -21,7 +21,7 @@
 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
 
-bool TreeSocket::OperQuit(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::OperQuit(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 1)
                return true;
index 54d4127b3b6dc8c8f5c61110ccefe6ff39b8db7c..c1105aa71c7b19cd956f6196f789f7bdc847714f 100644 (file)
@@ -24,7 +24,7 @@
 /** Because the core won't let users or even SERVERS set +o,
  * we use the OPERTYPE command to do this.
  */
-bool TreeSocket::OperType(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::OperType(const std::string &prefix, parameterlist &params)
 {
        if (params.size() != 1)
                return true;
index d9649ff9cf1f63979af42af3338901546392a1f9..50ab04566b7bf781e32c635a90f76e3053f48db2 100644 (file)
@@ -35,7 +35,7 @@ int ModuleSpanningTree::HandleAdmin(const std::vector<std::string>& parameters,
                        return 0;
 
                /* Remote ADMIN, the server is within the 1st parameter */
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(parameters[0]);
                /* Send it out remotely, generate no reply yet */
                TreeServer* s = Utils->FindServerMask(parameters[0]);
index b49417f8a9220de06aecf6546d9987662499d9b9..989ee8900f5b19ae69c871ac978e1e2abd102123 100644 (file)
@@ -94,7 +94,7 @@ int ModuleSpanningTree::HandleMap(const std::vector<std::string>& parameters, Us
                }
                else if (s && s != Utils->TreeRoot)
                {
-                       std::deque<std::string> params;
+                       parameterlist params;
                        params.push_back(parameters[0]);
 
                        params[0] = s->GetName();
index 154b4684c26b65f8d82847b061726132a5387a48..039cbb0d0bf99b93906e8a9a581e8dd8acf284af 100644 (file)
@@ -34,7 +34,7 @@ int ModuleSpanningTree::HandleModules(const std::vector<std::string>& parameters
                if (InspIRCd::Match(ServerInstance->Config->ServerName, parameters[0]))
                        return 0;
 
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(parameters[0]);
                TreeServer* s = Utils->FindServerMask(parameters[0].c_str());
                if (s)
index 23e835f785945141e7da9d787f85c2e1fd71337d..bee75975d41f22a87268878bd9555d8a7681aec7 100644 (file)
@@ -35,7 +35,7 @@ int ModuleSpanningTree::HandleMotd(const std::vector<std::string>& parameters, U
                        return 0;
 
                /* Remote MOTD, the server is within the 1st parameter */
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(parameters[0]);
                /* Send it out remotely, generate no reply yet */
                TreeServer* s = Utils->FindServerMask(parameters[0]);
index 4bde25fbe60c05e806c6617199b33f64c816dabd..76522a3dd0c93e561ebe1095e157943430f49207 100644 (file)
@@ -36,7 +36,7 @@ int ModuleSpanningTree::HandleStats(const std::vector<std::string>& parameters,
                        return 0;
 
                /* Remote STATS, the server is within the 2nd parameter */
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(parameters[0]);
                params.push_back(parameters[1]);
                /* Send it out remotely, generate no reply yet */
index bd1c5d48903a85df7195793f6d828bf218cb85da..d8498cd02dc77bb28e0d1f7782c591f11697179e 100644 (file)
@@ -38,7 +38,7 @@ int ModuleSpanningTree::HandleTime(const std::vector<std::string>& parameters, U
                        if (found == Utils->TreeRoot)
                                return 0;
 
-                       std::deque<std::string> params;
+                       parameterlist params;
                        params.push_back(found->GetName());
                        params.push_back(user->uuid);
                        Utils->DoOneToOne(ServerInstance->Config->GetSID(),"TIME",params,found->GetName());
index 9302ac50fccd71a33c3f76aa88fdc9ff00225355..68b0919c9cda9ce8fbbff9f467f74134702eb65a 100644 (file)
@@ -34,7 +34,7 @@ int ModuleSpanningTree::HandleRemoteWhois(const std::vector<std::string>& parame
                User* remote = ServerInstance->FindNick(parameters[1]);
                if ((remote) && (remote->GetFd() < 0))
                {
-                       std::deque<std::string> params;
+                       parameterlist params;
                        params.push_back(remote->uuid);
                        Utils->DoOneToOne(user->uuid,"IDLE",params,remote->server);
                        return 1;
index e268be7acba3bddd9a54ba4ecb29f3a175bcf68a..044d6e50cc78b18b68ac1fee2b1b6e556ff75110 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::LocalPing(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::LocalPing(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 1)
                return true;
index 8e1c08e984c2ed7b9a76b9de3d34e650d0929a64..6d9cd419374f733d09f939a472d792b3fc30c9fb 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::LocalPong(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::LocalPong(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 1)
                return true;
index b3f2f80bb19bf21e3882596a8825a0bebe4c4046..719ff00466024f2d91094231ee66c7c0b6c3b5cb 100644 (file)
@@ -47,7 +47,7 @@ void ModuleSpanningTree::OnPostCommand(const std::string &command, const std::ve
                // can just handle commands locally, without having
                // to have any special provision in place for remote
                // commands and linking protocols.
-               std::deque<std::string> params;
+               parameterlist params;
                params.clear();
                unsigned int n_translate = thiscmd->translation.size();
                TranslateType translate_to;
index b9b62ad006df4ad89038b9f950fe2215e85bbb1f..67e4a0cddc18b57466da10aac30a25dc0a31f60e 100644 (file)
@@ -23,7 +23,7 @@
 
 
 /** remote MOTD. leet, huh? */
-bool TreeSocket::ServerMessage(const std::string &messagetype, const std::string &prefix, std::deque<std::string> &params, const std::string &sourceserv)
+bool TreeSocket::ServerMessage(const std::string &messagetype, const std::string &prefix, parameterlist &params, const std::string &sourceserv)
 {
        if (params.size() >= 2)
        {
index 722b7c543994ff5b62517144b992b059962aded6..1e5ae7ade8e8536d4bf88eed729c495a325c4b14 100644 (file)
@@ -68,7 +68,7 @@ void SpanningTreeProtocolInterface::SendTopic(Channel* channel, std::string &top
        Utils->DoOneToMany(ServerInstance->Config->GetSID(),"FTOPIC", params);
 }
 
-void SpanningTreeProtocolInterface::SendMode(const std::string &target, const parameterlist &modedata, const std::deque<TranslateType> &translate)
+void SpanningTreeProtocolInterface::SendMode(const std::string &target, const parameterlist &modedata, const std::vector<TranslateType> &translate)
 {
        if (modedata.empty())
                return;
@@ -183,7 +183,7 @@ void SpanningTreeProtocolInterface::Introduce(User* user)
                return;
        if (IS_LOCAL(user))
        {
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(user->uuid);
                params.push_back(ConvToStr(user->age));
                params.push_back(user->nick);
index 24b0cee2031bb596872b707b2aff7760cc9ade7a..de0afcef7fba66bc2bd3d6a90d9581a44460b254 100644 (file)
@@ -16,7 +16,7 @@ class SpanningTreeProtocolInterface : public ProtocolInterface
        virtual void SendEncapsulatedData(parameterlist &encap);
        virtual void SendMetaData(void* target, TargetTypeFlags type, const std::string &key, const std::string &data);
        virtual void SendTopic(Channel* channel, std::string &topic);
-       virtual void SendMode(const std::string &target, const parameterlist &modedata, const std::deque<TranslateType> &types);
+       virtual void SendMode(const std::string &target, const parameterlist &modedata, const std::vector<TranslateType> &types);
        virtual void SendModeNotice(const std::string &modes, const std::string &text);
        virtual void SendSNONotice(const std::string &snomask, const std::string &text);
        virtual void PushToClient(User* target, const std::string &rawline);
index 01e2481bbb589c6ad9c8c7db8040a87bef75fa49..e0545f01e74c420a278c0b62450ceb15f6a86bc1 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::Push(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::Push(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 2)
                return true;
index e64a262ca02fbf79f13b84fa66510e9f51d5bd86..a5dd317528993251ea6b7d3bec83cc9f93c12523 100644 (file)
@@ -79,7 +79,7 @@ void CommandRSQuit::NoticeUser(User* user, const std::string &msg)
        }
        else
        {
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(user->nick);
                params.push_back("NOTICE "+ConvToStr(user->nick)+" :"+msg);
                Utils->DoOneToOne(ServerInstance->Config->GetSID(), "PUSH", params, user->server);
index cb6e6dcda81b4f4b822d92875aa1c33397a29c08..24d1a66e76b4c2ca008b7e99ab4a50f0deed053d 100644 (file)
@@ -31,7 +31,7 @@
  * Some server somewhere in the network introducing another server.
  *     -- w
  */
-bool TreeSocket::RemoteServer(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::RemoteServer(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 5)
        {
@@ -88,7 +88,7 @@ bool TreeSocket::RemoteServer(const std::string &prefix, std::deque<std::string>
  * This is used after the other side of a connection has accepted our credentials.
  * They are then introducing themselves to us, BEFORE either of us burst. -- w
  */
-bool TreeSocket::Outbound_Reply_Server(std::deque<std::string> &params)
+bool TreeSocket::Outbound_Reply_Server(parameterlist &params)
 {
        if (params.size() < 5)
        {
@@ -184,7 +184,7 @@ bool TreeSocket::Outbound_Reply_Server(std::deque<std::string> &params)
  * Someone else is attempting to connect to us if this is called. Validate their credentials etc.
  *             -- w
  */
-bool TreeSocket::Inbound_Server(std::deque<std::string> &params)
+bool TreeSocket::Inbound_Server(parameterlist &params)
 {
        if (params.size() < 5)
        {
index 7c9efecde3d34621c9196940c400c3884a0c1507..810b6dc7723d301f949f8e926d612991840d6089 100644 (file)
@@ -27,7 +27,7 @@
 
 /* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/link.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::Stats(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::Stats(const std::string &prefix, parameterlist &params)
 {
        /* Get the reply to a STATS query if it matches this servername,
         * and send it back as a load of PUSH queries
@@ -41,7 +41,7 @@ bool TreeSocket::Stats(const std::string &prefix, std::deque<std::string> &param
                        User* source = this->ServerInstance->FindNick(prefix);
                        if (source)
                        {
-                               std::deque<std::string> par;
+                               parameterlist par;
                                par.push_back(prefix);
                                par.push_back("");
                                DoStats(this->ServerInstance, *(params[0].c_str()), source, results);
index 40aa80392ba159f84eb3a0174f38ee55c280944c..dbdcce718c79517c7759d7377cd966adbfa21fa0 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::ServiceJoin(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::ServiceJoin(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 2)
                return true;
index cb4977740f66768d305d26d279a9db3880971f9e..fe08b9ee2d082622a3f7cc0f75a4b9ec5ac55429 100644 (file)
@@ -29,7 +29,7 @@
 /** Because Andy insists that services-compatible servers must
  * implement SVSNICK and SVSJOIN, that's exactly what we do :p
  */
-bool TreeSocket::ForceNick(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::ForceNick(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 3)
                return true;
@@ -42,7 +42,7 @@ bool TreeSocket::ForceNick(const std::string &prefix, std::deque<std::string> &p
 
                if (IS_LOCAL(u))
                {
-                       std::deque<std::string> par;
+                       parameterlist par;
                        par.push_back(params[1]);
 
                        if (!u->ForceNickChange(params[1].c_str()))
index 8d95395ed18555b4d4e9190e191c52f701e627c6..1649b32b6bca090a0782584c500d5cf4d976d8a4 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::ServicePart(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::ServicePart(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 2)
                return true;
index 006260a8951d5adb7b9984d95882f3842f67ed3a..d2c8f79897275fcf255eba9e10e0a04a5e0c2766 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::Time(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::Time(const std::string &prefix, parameterlist &params)
 {
        // :source.server TIME remote.server sendernick
        // :remote.server TIME source.server sendernick TS
index de9c78fef42bd48d9c62e066f1f411493321dd67..6d99c2a767beedf254a94124c6bbf9dbd956d73d 100644 (file)
@@ -198,7 +198,7 @@ class TreeSocket : public BufferedSocket
        /* Isolate and return the elements that are different between two comma seperated lists */
        std::string ListDifference(const std::string &one, const std::string &two);
 
-       bool Capab(const std::deque<std::string> &params);
+       bool Capab(const parameterlist &params);
 
        /** This function forces this server to quit, removing this server
         * and any users on it (and servers and users below that, etc etc).
@@ -215,19 +215,19 @@ class TreeSocket : public BufferedSocket
        void Squit(TreeServer* Current, const std::string &reason);
 
        /** FMODE command - server mode with timestamp checks */
-       bool ForceMode(const std::string &source, std::deque<std::string> &params);
+       bool ForceMode(const std::string &source, parameterlist &params);
 
        /** FTOPIC command */
-       bool ForceTopic(const std::string &source, std::deque<std::string> &params);
+       bool ForceTopic(const std::string &source, parameterlist &params);
 
        /** FJOIN, similar to TS6 SJOIN, but not quite. */
-       bool ForceJoin(const std::string &source, std::deque<std::string> &params);
+       bool ForceJoin(const std::string &source, parameterlist &params);
 
        /* Used on nick collision ... XXX ugly function HACK */
        int DoCollision(User *u, time_t remotets, const std::string &remoteident, const std::string &remoteip, const std::string &remoteuid);
 
        /** UID command */
-       bool ParseUID(const std::string &source, std::deque<std::string> &params);
+       bool ParseUID(const std::string &source, parameterlist &params);
 
        /** Send one or more FJOINs for a channel of users.
         * If the length of a single line is more than 480-NICKMAX
@@ -266,117 +266,117 @@ class TreeSocket : public BufferedSocket
        void WriteLine(std::string line);
 
        /** Handle ERROR command */
-       bool Error(std::deque<std::string> &params);
+       bool Error(parameterlist &params);
 
        /** remote MOTD. leet, huh? */
-       bool Motd(const std::string &prefix, std::deque<std::string> &params);
+       bool Motd(const std::string &prefix, parameterlist &params);
 
        /** remote ADMIN. leet, huh? */
-       bool Admin(const std::string &prefix, std::deque<std::string> &params);
+       bool Admin(const std::string &prefix, parameterlist &params);
 
        /** Remote MODULES */
-       bool Modules(const std::string &prefix, std::deque<std::string> &params);
+       bool Modules(const std::string &prefix, parameterlist &params);
 
-       bool Stats(const std::string &prefix, std::deque<std::string> &params);
+       bool Stats(const std::string &prefix, parameterlist &params);
 
        /** Because the core won't let users or even SERVERS set +o,
         * we use the OPERTYPE command to do this.
         */
-       bool OperType(const std::string &prefix, std::deque<std::string> &params);
+       bool OperType(const std::string &prefix, parameterlist &params);
 
        /** Because Andy insists that services-compatible servers must
         * implement SVSNICK and SVSJOIN, that's exactly what we do :p
         */
-       bool ForceNick(const std::string &prefix, std::deque<std::string> &params);
+       bool ForceNick(const std::string &prefix, parameterlist &params);
 
        /** PRIVMSG or NOTICE with server origin ONLY
         */
-       bool ServerMessage(const std::string &messagetype, const std::string &prefix, std::deque<std::string> &params, const std::string &sourceserv);
+       bool ServerMessage(const std::string &messagetype, const std::string &prefix, parameterlist &params, const std::string &sourceserv);
 
        /** ENCAP command
         */
-       bool Encap(const std::string &prefix, std::deque<std::string> &params);
+       bool Encap(const std::string &prefix, parameterlist &params);
 
        /** OPERQUIT command
         */
-       bool OperQuit(const std::string &prefix, std::deque<std::string> &params);
+       bool OperQuit(const std::string &prefix, parameterlist &params);
 
        /** SVSJOIN
         */
-       bool ServiceJoin(const std::string &prefix, std::deque<std::string> &params);
+       bool ServiceJoin(const std::string &prefix, parameterlist &params);
 
        /** SVSPART
         */
-       bool ServicePart(const std::string &prefix, std::deque<std::string> &params);
+       bool ServicePart(const std::string &prefix, parameterlist &params);
 
        /** KILL
         */
-       bool RemoteKill(const std::string &prefix, std::deque<std::string> &params);
+       bool RemoteKill(const std::string &prefix, parameterlist &params);
 
        /** PONG
         */
-       bool LocalPong(const std::string &prefix, std::deque<std::string> &params);
+       bool LocalPong(const std::string &prefix, parameterlist &params);
 
        /** METADATA
         */
-       bool MetaData(const std::string &prefix, std::deque<std::string> &params);
+       bool MetaData(const std::string &prefix, parameterlist &params);
 
        /** VERSION
         */
-       bool ServerVersion(const std::string &prefix, std::deque<std::string> &params);
+       bool ServerVersion(const std::string &prefix, parameterlist &params);
 
        /** CHGHOST
         */
-       bool ChangeHost(const std::string &prefix, std::deque<std::string> &params);
+       bool ChangeHost(const std::string &prefix, parameterlist &params);
 
        /** ADDLINE
         */
-       bool AddLine(const std::string &prefix, std::deque<std::string> &params);
+       bool AddLine(const std::string &prefix, parameterlist &params);
 
        /** DELLINE
         */
-       bool DelLine(const std::string &prefix, std::deque<std::string> &params);
+       bool DelLine(const std::string &prefix, parameterlist &params);
 
        /** CHGNAME
         */
-       bool ChangeName(const std::string &prefix, std::deque<std::string> &params);
+       bool ChangeName(const std::string &prefix, parameterlist &params);
 
        /** WHOIS
         */
-       bool Whois(const std::string &prefix, std::deque<std::string> &params);
+       bool Whois(const std::string &prefix, parameterlist &params);
 
        /** PUSH
         */
-       bool Push(const std::string &prefix, std::deque<std::string> &params);
+       bool Push(const std::string &prefix, parameterlist &params);
 
        /** TIME
         */
-       bool Time(const std::string &prefix, std::deque<std::string> &params);
+       bool Time(const std::string &prefix, parameterlist &params);
 
        /** PING
         */
-       bool LocalPing(const std::string &prefix, std::deque<std::string> &params);
+       bool LocalPing(const std::string &prefix, parameterlist &params);
 
        /** Remove all modes from a channel, including statusmodes (+qaovh etc), simplemodes, parameter modes.
         * This does not update the timestamp of the target channel, this must be done seperately.
         */
-       bool RemoveStatus(const std::string &prefix, std::deque<std::string> &params);
+       bool RemoveStatus(const std::string &prefix, parameterlist &params);
 
        /** <- (remote) <- SERVER
         */
-       bool RemoteServer(const std::string &prefix, std::deque<std::string> &params);
+       bool RemoteServer(const std::string &prefix, parameterlist &params);
 
        /** (local) -> SERVER
         */
-       bool Outbound_Reply_Server(std::deque<std::string> &params);
+       bool Outbound_Reply_Server(parameterlist &params);
 
        /** (local) <- SERVER
         */
-       bool Inbound_Server(std::deque<std::string> &params);
+       bool Inbound_Server(parameterlist &params);
 
        /** Handle netsplit
         */
-       void Split(const std::string &line, std::deque<std::string> &n);
+       void Split(const std::string &line, parameterlist &n);
 
        /** Process complete line from buffer
         */
index e98246a3559de58c5b2fe03dfc2d1aa604ffc6e2..46f2657ff7fb7c71e715b6284a40c4ff68447a8b 100644 (file)
@@ -231,7 +231,7 @@ void TreeSocket::Squit(TreeServer* Current, const std::string &reason)
                Event rmode((char*)Current->GetName().c_str(), (Module*)Utils->Creator, "lost_server");
                rmode.Send(ServerInstance);
 
-               std::deque<std::string> params;
+               parameterlist params;
                params.push_back(Current->GetName());
                params.push_back(":"+reason);
                Utils->DoOneToAllButSender(Current->GetParent()->GetName(),"SQUIT",params,Current->GetName());
index b117ebe822fc34c8c14ea28c5387ae36124d1dd8..bc9388c94956287c8a6f94e7716be03525d0bb6f 100644 (file)
@@ -38,7 +38,7 @@ void TreeSocket::WriteLine(std::string line)
 
 
 /* Handle ERROR command */
-bool TreeSocket::Error(std::deque<std::string> &params)
+bool TreeSocket::Error(parameterlist &params)
 {
        if (params.size() < 1)
                return false;
@@ -47,7 +47,7 @@ bool TreeSocket::Error(std::deque<std::string> &params)
        return false;
 }
 
-void TreeSocket::Split(const std::string &line, std::deque<std::string> &n)
+void TreeSocket::Split(const std::string &line, parameterlist &n)
 {
        n.clear();
        irc::tokenstream tokens(line);
@@ -61,7 +61,7 @@ void TreeSocket::Split(const std::string &line, std::deque<std::string> &n)
 
 bool TreeSocket::ProcessLine(std::string &line)
 {
-       std::deque<std::string> params;
+       parameterlist params;
        irc::string command;
        std::string prefix;
 
@@ -80,17 +80,20 @@ bool TreeSocket::ProcessLine(std::string &line)
        if ((params[0][0] == ':') && (params.size() > 1))
        {
                prefix = params[0].substr(1);
-               params.pop_front();
 
                if (prefix.empty())
                {
                        this->SendError("BUG (?) Empty prefix recieved: " + line);
                        return false;
                }
+               command = params[1].c_str();
+               params.erase(params.begin(), params.begin() + 2);
+       }
+       else
+       {
+               command = params[0].c_str();
+               params.erase(params.begin());
        }
-
-       command = params[0].c_str();
-       params.pop_front();
 
        switch (this->LinkState)
        {
index 7565be337b5d5aadac28ed4e422c34d683f11a44..7146f4c0180c165cb6f2bf25e6100fe49db32b01 100644 (file)
@@ -23,7 +23,7 @@
 
 /* $ModDep: m_spanningtree/resolvers.h m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/link.h m_spanningtree/treesocket.h m_hash.h m_spanningtree/handshaketimer.h */
 
-bool TreeSocket::ParseUID(const std::string &source, std::deque<std::string> &params)
+bool TreeSocket::ParseUID(const std::string &source, parameterlist &params)
 {
        /** Do we have enough parameters:
         *      0    1    2    3    4    5        6        7     8        9       (n-1)
index e527cd2daa742e45d46154ec34728ff92a3a9ac8..7c17715578aed586b90218bcbb1193e8681bb83a 100644 (file)
@@ -216,7 +216,7 @@ void SpanningTreeUtilities::GetListOfServersForChannel(Channel* c, TreeServerLis
        return;
 }
 
-bool SpanningTreeUtilities::DoOneToAllButSenderRaw(const std::string &data, const std::string &omit, const std::string &prefix, const irc::string &command, std::deque<std::string> &params)
+bool SpanningTreeUtilities::DoOneToAllButSenderRaw(const std::string &data, const std::string &omit, const std::string &prefix, const irc::string &command, parameterlist &params)
 {
        char pfx = 0;
        TreeServer* omitroute = this->BestRouteTo(omit);
@@ -236,7 +236,7 @@ bool SpanningTreeUtilities::DoOneToAllButSenderRaw(const std::string &data, cons
                                User* d = ServerInstance->FindNick(params[0]);
                                if (d)
                                {
-                                       std::deque<std::string> par;
+                                       parameterlist par;
                                        par.push_back(params[0]);
                                        par.push_back(":"+params[1]);
                                        this->DoOneToOne(prefix,command.c_str(),par,d->server);
@@ -245,7 +245,7 @@ bool SpanningTreeUtilities::DoOneToAllButSenderRaw(const std::string &data, cons
                        }
                        else if (*(params[0].c_str()) == '$')
                        {
-                               std::deque<std::string> par;
+                               parameterlist par;
                                par.push_back(params[0]);
                                par.push_back(":"+params[1]);
                                this->DoOneToAllButSender(prefix,command.c_str(),par,omitroute->GetName());
@@ -289,7 +289,7 @@ bool SpanningTreeUtilities::DoOneToAllButSenderRaw(const std::string &data, cons
        return true;
 }
 
-bool SpanningTreeUtilities::DoOneToAllButSender(const std::string &prefix, const std::string &command, std::deque<std::string> &params, std::string omit)
+bool SpanningTreeUtilities::DoOneToAllButSender(const std::string &prefix, const std::string &command, parameterlist &params, std::string omit)
 {
        TreeServer* omitroute = this->BestRouteTo(omit);
        std::string FullLine = ":" + prefix + " " + command;
@@ -316,7 +316,7 @@ bool SpanningTreeUtilities::DoOneToAllButSender(const std::string &prefix, const
        return true;
 }
 
-bool SpanningTreeUtilities::DoOneToMany(const std::string &prefix, const std::string &command, std::deque<std::string> &params)
+bool SpanningTreeUtilities::DoOneToMany(const std::string &prefix, const std::string &command, parameterlist &params)
 {
        std::string FullLine = ":" + prefix + " " + command;
        unsigned int words = params.size();
@@ -338,21 +338,21 @@ bool SpanningTreeUtilities::DoOneToMany(const std::string &prefix, const std::st
        return true;
 }
 
-bool SpanningTreeUtilities::DoOneToMany(const char* prefix, const char* command, std::deque<std::string> &params)
+bool SpanningTreeUtilities::DoOneToMany(const char* prefix, const char* command, parameterlist &params)
 {
        std::string spfx = prefix;
        std::string scmd = command;
        return this->DoOneToMany(spfx, scmd, params);
 }
 
-bool SpanningTreeUtilities::DoOneToAllButSender(const char* prefix, const char* command, std::deque<std::string> &params, std::string omit)
+bool SpanningTreeUtilities::DoOneToAllButSender(const char* prefix, const char* command, parameterlist &params, std::string omit)
 {
        std::string spfx = prefix;
        std::string scmd = command;
        return this->DoOneToAllButSender(spfx, scmd, params, omit);
 }
 
-bool SpanningTreeUtilities::DoOneToOne(const std::string &prefix, const std::string &command, std::deque<std::string> &params, std::string target)
+bool SpanningTreeUtilities::DoOneToOne(const std::string &prefix, const std::string &command, parameterlist &params, std::string target)
 {
        TreeServer* Route = this->BestRouteTo(target);
        if (Route)
index 81c47267d34d4b5b97feaa3aefdf024fb9029933..9936ebacf52c3576cdc7c7269e6e51b063a84506 100644 (file)
@@ -149,27 +149,27 @@ class SpanningTreeUtilities : public classbase
 
        /** Send a message from this server to one other local or remote
         */
-       bool DoOneToOne(const std::string &prefix, const std::string &command, std::deque<std::string> &params, std::string target);
+       bool DoOneToOne(const std::string &prefix, const std::string &command, parameterlist &params, std::string target);
 
        /** Send a message from this server to all but one other, local or remote
         */
-       bool DoOneToAllButSender(const std::string &prefix, const std::string &command, std::deque<std::string> &params, std::string omit);
+       bool DoOneToAllButSender(const std::string &prefix, const std::string &command, parameterlist &params, std::string omit);
 
        /** Send a message from this server to all but one other, local or remote
         */
-       bool DoOneToAllButSender(const char* prefix, const char* command, std::deque<std::string> &params, std::string omit);
+       bool DoOneToAllButSender(const char* prefix, const char* command, parameterlist &params, std::string omit);
 
        /** Send a message from this server to all others
         */
-       bool DoOneToMany(const std::string &prefix, const std::string &command, std::deque<std::string> &params);
+       bool DoOneToMany(const std::string &prefix, const std::string &command, parameterlist &params);
 
        /** Send a message from this server to all others
         */
-       bool DoOneToMany(const char* prefix, const char* command, std::deque<std::string> &params);
+       bool DoOneToMany(const char* prefix, const char* command, parameterlist &params);
 
        /** Send a message from this server to all others, without doing any processing on the command (e.g. send it as-is with colons and all)
         */
-       bool DoOneToAllButSenderRaw(const std::string &data, const std::string &omit, const std::string &prefix, const irc::string &command, std::deque<std::string> &params);
+       bool DoOneToAllButSenderRaw(const std::string &data, const std::string &omit, const std::string &prefix, const irc::string &command, parameterlist &params);
 
        /** Read the spanningtree module's tags from the config file
         */
index 4f8391148194f9cf66dc376286dca5c927338f64..abf61611a857cc3dcdff9583653179fe168fdff6 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::ServerVersion(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::ServerVersion(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 1)
                return true;
index 85f186c40ed695c6180b7e7161ab82396e846f47..7967131826a9db98f9f9667183d57054515db0ae 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
-bool TreeSocket::Whois(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::Whois(const std::string &prefix, parameterlist &params)
 {
        if (params.size() < 1)
                return true;
@@ -43,7 +43,7 @@ bool TreeSocket::Whois(const std::string &prefix, std::deque<std::string> &param
                                char idle[MAXBUF];
                                snprintf(signon, MAXBUF, "%lu", (unsigned long)x->signon);
                                snprintf(idle, MAXBUF, "%lu", (unsigned long)abs((long)((x->idle_lastmsg) - ServerInstance->Time())));
-                               std::deque<std::string> par;
+                               parameterlist par;
                                par.push_back(prefix);
                                par.push_back(signon);
                                par.push_back(idle);