]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/postcommand.cpp
Fix some regressions in sending tags between servers.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / postcommand.cpp
index c7b4707b3a854804f414b13a1a7e5b024c7cc2d2..10cbbce82f92d8a34312549c34d530501cbdef52 100644 (file)
@@ -39,12 +39,13 @@ void SpanningTreeUtilities::RouteCommand(TreeServer* origin, CommandBase* thiscm
 
        const bool encap = ((routing.type == ROUTE_TYPE_OPT_BCAST) || (routing.type == ROUTE_TYPE_OPT_UCAST));
        CmdBuilder params(user, encap ? "ENCAP" : command.c_str());
+       params.push_tags(parameters.GetTags());
        TreeServer* sdest = NULL;
 
        if (routing.type == ROUTE_TYPE_OPT_BCAST)
        {
                params.push('*');
-               params.push_back(command);
+               params.push(command);
        }
        else if (routing.type == ROUTE_TYPE_UNICAST || routing.type == ROUTE_TYPE_OPT_UCAST)
        {
@@ -63,8 +64,8 @@ void SpanningTreeUtilities::RouteCommand(TreeServer* origin, CommandBase* thiscm
 
                if (encap)
                {
-                       params.push_back(sdest->GetID());
-                       params.push_back(command);
+                       params.push(sdest->GetID());
+                       params.push(command);
                }
        }
        else
@@ -82,7 +83,7 @@ void SpanningTreeUtilities::RouteCommand(TreeServer* origin, CommandBase* thiscm
 
        std::string output_text = CommandParser::TranslateUIDs(thiscmd->translation, parameters, true, thiscmd);
 
-       params.push_back(output_text);
+       params.push(output_text);
 
        if (routing.type == ROUTE_TYPE_MESSAGE)
        {
@@ -100,7 +101,10 @@ void SpanningTreeUtilities::RouteCommand(TreeServer* origin, CommandBase* thiscm
                                return;
                        // TODO OnBuildExemptList hook was here
                        CUList exempts;
-                       SendChannelMessage(user->uuid, c, parameters[1], pfx, exempts, command.c_str(), origin ? origin->GetSocket() : NULL);
+                       std::string message;
+                       if (parameters.size() >= 2)
+                               message.assign(parameters[1]);
+                       SendChannelMessage(user, c, message, pfx, parameters.GetTags(), exempts, command.c_str(), origin ? origin->GetSocket() : NULL);
                }
                else if (dest[0] == '$')
                {