3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-25 13:29:27 +01:00

Merge pull request #755 from slingamn/issue754_dm_tags

fix #754
This commit is contained in:
Shivaram Lingamneni 2020-01-25 18:31:27 -08:00 committed by GitHub
commit 66e2710ba2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2011,13 +2011,16 @@ func dispatchMessageToTarget(client *Client, tags map[string]string, histType hi
allowedTor := !user.isTor || !message.IsRestrictedCTCPMessage() allowedTor := !user.isTor || !message.IsRestrictedCTCPMessage()
if allowedPlusR && allowedTor { if allowedPlusR && allowedTor {
for _, session := range user.Sessions() { for _, session := range user.Sessions() {
if histType == history.Tagmsg { hasTagsCap := session.capabilities.Has(caps.MessageTags)
// don't send TAGMSG at all if they don't have the tags cap // don't send TAGMSG at all if they don't have the tags cap
if session.capabilities.Has(caps.MessageTags) { if histType == history.Tagmsg && hasTagsCap {
session.sendFromClientInternal(false, message.Time, message.Msgid, nickMaskString, accountName, tags, command, tnick) session.sendFromClientInternal(false, message.Time, message.Msgid, nickMaskString, accountName, tags, command, tnick)
} else if histType != history.Tagmsg {
tagsToSend := tags
if !hasTagsCap {
tagsToSend = nil
} }
} else { session.sendSplitMsgFromClientInternal(false, nickMaskString, accountName, tagsToSend, command, tnick, message)
session.sendSplitMsgFromClientInternal(false, nickMaskString, accountName, tags, command, tnick, message)
} }
} }
} }
@ -2034,10 +2037,15 @@ func dispatchMessageToTarget(client *Client, tags map[string]string, histType hi
if session == rb.session { if session == rb.session {
continue continue
} }
if histType == history.Tagmsg && rb.session.capabilities.Has(caps.MessageTags) { hasTagsCap := session.capabilities.Has(caps.MessageTags)
if histType == history.Tagmsg && hasTagsCap {
session.sendFromClientInternal(false, message.Time, message.Msgid, nickMaskString, accountName, tags, command, tnick) session.sendFromClientInternal(false, message.Time, message.Msgid, nickMaskString, accountName, tags, command, tnick)
} else if histType != history.Tagmsg { } else if histType != history.Tagmsg {
session.sendSplitMsgFromClientInternal(false, nickMaskString, accountName, tags, command, tnick, message) tagsToSend := tags
if !hasTagsCap {
tagsToSend = nil
}
session.sendSplitMsgFromClientInternal(false, nickMaskString, accountName, tagsToSend, command, tnick, message)
} }
} }
if histType != history.Notice && user.Away() { if histType != history.Notice && user.Away() {