From e2fcf7b3b15f86fec250b7b784bdf3d0631048c6 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Fri, 19 Jul 2019 14:12:13 +0100 Subject: Add an event for adding tags to S2S messages. --- src/modules/m_spanningtree/misccommands.cpp | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/modules/m_spanningtree/misccommands.cpp') diff --git a/src/modules/m_spanningtree/misccommands.cpp b/src/modules/m_spanningtree/misccommands.cpp index 8fc1b178f..1d4104f28 100644 --- a/src/modules/m_spanningtree/misccommands.cpp +++ b/src/modules/m_spanningtree/misccommands.cpp @@ -29,6 +29,42 @@ #include "commands.h" #include "treeserver.h" +void CmdBuilder::FireEvent(Server* target, const char* cmd, ClientProtocol::TagMap& taglist) +{ + FOREACH_MOD_CUSTOM(Utils->Creator->GetMessageEventProvider(), ServerProtocol::MessageEventListener, OnBuildMessage, (target, cmd, taglist)); + UpdateTags(); +} + +void CmdBuilder::FireEvent(User* target, const char* cmd, ClientProtocol::TagMap& taglist) +{ + FOREACH_MOD_CUSTOM(Utils->Creator->GetMessageEventProvider(), ServerProtocol::MessageEventListener, OnBuildMessage, (target, cmd, taglist)); + UpdateTags(); +} + +void CmdBuilder::UpdateTags() +{ + std::string taglist; + if (!tags.empty()) + { + char separator = '@'; + for (ClientProtocol::TagMap::const_iterator iter = tags.begin(); iter != tags.end(); ++iter) + { + taglist.push_back(separator); + separator = ';'; + taglist.append(iter->first); + if (!iter->second.value.empty()) + { + taglist.push_back('='); + taglist.append(iter->second.value); + } + } + taglist.push_back(' '); + content.insert(0, taglist); + } + content.replace(0, tagsize, taglist); + tagsize = content.length(); +} + CmdResult CommandSNONotice::Handle(User* user, Params& params) { ServerInstance->SNO->WriteToSnoMask(params[0][0], "From " + user->nick + ": " + params[1]); -- cgit v1.3.1-10-gc9f91 From 9cf381330eab69d7e5bf26684d1ec8075aee60a2 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Mon, 22 Jul 2019 12:40:22 +0100 Subject: Fix some regressions in sending tags between servers. --- src/modules/m_spanningtree/commandbuilder.h | 2 +- src/modules/m_spanningtree/misccommands.cpp | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'src/modules/m_spanningtree/misccommands.cpp') diff --git a/src/modules/m_spanningtree/commandbuilder.h b/src/modules/m_spanningtree/commandbuilder.h index 6159d7b8a..f6cca9917 100644 --- a/src/modules/m_spanningtree/commandbuilder.h +++ b/src/modules/m_spanningtree/commandbuilder.h @@ -69,7 +69,7 @@ class CmdBuilder { content.append(src->uuid); push(cmd); - if (src == ServerInstance->FakeClient) + if (InspIRCd::IsSID(src->uuid)) FireEvent(src->server, cmd, tags); else FireEvent(src, cmd, tags); diff --git a/src/modules/m_spanningtree/misccommands.cpp b/src/modules/m_spanningtree/misccommands.cpp index 1d4104f28..55c36a3ba 100644 --- a/src/modules/m_spanningtree/misccommands.cpp +++ b/src/modules/m_spanningtree/misccommands.cpp @@ -59,10 +59,9 @@ void CmdBuilder::UpdateTags() } } taglist.push_back(' '); - content.insert(0, taglist); } content.replace(0, tagsize, taglist); - tagsize = content.length(); + tagsize = taglist.length(); } CmdResult CommandSNONotice::Handle(User* user, Params& params) -- cgit v1.3.1-10-gc9f91