]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
m_spanningtree: Parse and copy message tags for all cmds
authorlinuxdaemon <linuxdaemon@snoonet.org>
Sat, 27 Apr 2019 22:35:31 +0000 (17:35 -0500)
committerPeter Powell <petpow@saberuk.com>
Sat, 27 Apr 2019 23:01:25 +0000 (00:01 +0100)
Don't ignore message tags on ServerCommands, and avoid creating
duplicate CommandBase::Params instances

src/modules/m_spanningtree/treesocket2.cpp

index aeb63c99c95d4c6ce119038ff96ca3776f0ada32..364586dffb48dcb4a2014dfa5fb944925c8d6be5 100644 (file)
@@ -377,21 +377,24 @@ void TreeSocket::ProcessConnectedLine(std::string& taglist, std::string& prefix,
 
        CmdResult res;
        ClientProtocol::TagMap tags;
+       std::string tag;
+       irc::sepstream tagstream(taglist, ';');
+       while (tagstream.GetToken(tag))
+               ProcessTag(who, tag, tags);
+
+       CommandBase::Params newparams(params, tags);
+
        if (scmd)
-               res = scmd->Handle(who, params);
+               res = scmd->Handle(who, newparams);
        else
        {
-               std::string tag;
-               irc::sepstream tagstream(taglist, ';');
-               while (tagstream.GetToken(tag))
-                       ProcessTag(who, tag, tags);
-               res = cmd->Handle(who, CommandBase::Params(params, tags));
+               res = cmd->Handle(who, newparams);
                if (res == CMD_INVALID)
                        throw ProtocolException("Error in command handler");
        }
 
        if (res == CMD_SUCCESS)
-               Utils->RouteCommand(server->GetRoute(), cmdbase, CommandBase::Params(params, tags), who);
+               Utils->RouteCommand(server->GetRoute(), cmdbase, newparams, who);
 }
 
 void TreeSocket::OnTimeout()