aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_spanningtree/main.cpp
diff options
context:
space:
mode:
authorGravatar linuxdaemon2019-06-22 09:10:32 -0500
committerGravatar Peter Powell2019-06-22 16:08:21 +0100
commit8f94fcc856dd492c6ecd5d1ebd1acdb7e59cbbe2 (patch)
tree945d62610c9114885e7062dcee7f5fb79db9af12 /src/modules/m_spanningtree/main.cpp
parentDeduplicate dirent.h inclusion. (diff)
downloadinspircd++-8f94fcc856dd492c6ecd5d1ebd1acdb7e59cbbe2.tar.gz
inspircd++-8f94fcc856dd492c6ecd5d1ebd1acdb7e59cbbe2.tar.bz2
inspircd++-8f94fcc856dd492c6ecd5d1ebd1acdb7e59cbbe2.zip
Fix msgid inconsistencies with TAGMSG
Also fixes accidentally copying incoming tags on TAGMSG when sending to other users
Diffstat (limited to 'src/modules/m_spanningtree/main.cpp')
-rw-r--r--src/modules/m_spanningtree/main.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index 55fe992b6..db5265344 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -39,6 +39,7 @@
ModuleSpanningTree::ModuleSpanningTree()
: Away::EventListener(this)
, Stats::EventListener(this)
+ , CTCTags::EventListener(this)
, rconnect(this)
, rsquit(this)
, map(this)
@@ -418,6 +419,42 @@ void ModuleSpanningTree::OnUserPostMessage(User* user, const MessageTarget& targ
}
}
+void ModuleSpanningTree::OnUserPostTagMessage(User* user, const MessageTarget& target, const CTCTags::TagMessageDetails& details)
+{
+ if (!IS_LOCAL(user))
+ return;
+
+ switch (target.type)
+ {
+ case MessageTarget::TYPE_USER:
+ {
+ User* d = target.Get<User>();
+ if (!IS_LOCAL(d))
+ {
+ CmdBuilder params(user, "TAGMSG");
+ params.push_tags(details.tags_out);
+ params.push_back(d->uuid);
+ params.Unicast(d);
+ }
+ break;
+ }
+ case MessageTarget::TYPE_CHANNEL:
+ {
+ Utils->SendChannelMessage(user->uuid, target.Get<Channel>(), "", target.status, details.tags_out, details.exemptions, "TAGMSG");
+ break;
+ }
+ case MessageTarget::TYPE_SERVER:
+ {
+ const std::string* serverglob = target.Get<std::string>();
+ CmdBuilder par(user, "TAGMSG");
+ par.push_tags(details.tags_out);
+ par.push_back(*serverglob);
+ par.Broadcast();
+ break;
+ }
+ }
+}
+
void ModuleSpanningTree::OnBackgroundTimer(time_t curtime)
{
AutoConnectServers(curtime);