From e18eb1db997a4adf2d6375d01d61ae633d54aae9 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Sun, 29 Nov 2020 19:06:12 -0500 Subject: [PATCH] fix #1411 Clients without event-playback should receive client-only tags in replayed PRIVMSG / NOTICE. --- irc/client.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/irc/client.go b/irc/client.go index a6fa6096..7c214339 100644 --- a/irc/client.go +++ b/irc/client.go @@ -1050,7 +1050,8 @@ func (client *Client) replayPrivmsgHistory(rb *ResponseBuffer, items []history.I } batchID = rb.StartNestedHistoryBatch(target) - allowTags := rb.session.capabilities.Has(caps.EventPlayback) + hasEventPlayback := rb.session.capabilities.Has(caps.EventPlayback) + hasTags := rb.session.capabilities.Has(caps.MessageTags) for _, item := range items { var command string switch item.Type { @@ -1059,7 +1060,7 @@ func (client *Client) replayPrivmsgHistory(rb *ResponseBuffer, items []history.I case history.Notice: command = "NOTICE" case history.Tagmsg: - if allowTags { + if hasEventPlayback && hasTags { command = "TAGMSG" } else { continue @@ -1068,7 +1069,7 @@ func (client *Client) replayPrivmsgHistory(rb *ResponseBuffer, items []history.I continue } var tags map[string]string - if allowTags { + if hasTags { tags = item.Tags } // XXX: Params[0] is the message target. if the source of this message is an in-memory