diff options
| author | 2019-06-22 09:10:32 -0500 | |
|---|---|---|
| committer | 2019-06-22 16:08:21 +0100 | |
| commit | 8f94fcc856dd492c6ecd5d1ebd1acdb7e59cbbe2 (patch) | |
| tree | 945d62610c9114885e7062dcee7f5fb79db9af12 /src/modules/m_spanningtree/main.cpp | |
| parent | Deduplicate dirent.h inclusion. (diff) | |
| download | inspircd++-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.cpp | 37 |
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); |
