From: linuxdaemon Date: Sat, 27 Apr 2019 22:35:31 +0000 (-0500) Subject: m_spanningtree: Parse and copy message tags for all cmds X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=095d0e615474a08455c6bc186fbdf8b1bc753e39;p=user%2Fhenk%2Fcode%2Finspircd.git m_spanningtree: Parse and copy message tags for all cmds Don't ignore message tags on ServerCommands, and avoid creating duplicate CommandBase::Params instances --- diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp index aeb63c99c..364586dff 100644 --- a/src/modules/m_spanningtree/treesocket2.cpp +++ b/src/modules/m_spanningtree/treesocket2.cpp @@ -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()