Browse Source

fix incorrect TAGMSG relaying

tags/v2.5.0-rc1
Shivaram Lingamneni 3 years ago
parent
commit
1b91360885
1 changed files with 9 additions and 4 deletions
  1. 9
    4
      irc/message_cache.go

+ 9
- 4
irc/message_cache.go View File

172
 
172
 
173
 func (m *MessageCache) Send(session *Session) {
173
 func (m *MessageCache) Send(session *Session) {
174
 	if m.fullTags != nil {
174
 	if m.fullTags != nil {
175
+		// Initialize() path:
175
 		if session.capabilities.Has(caps.MessageTags) {
176
 		if session.capabilities.Has(caps.MessageTags) {
176
 			session.sendBytes(m.fullTags, false)
177
 			session.sendBytes(m.fullTags, false)
177
-		} else if !(session.capabilities.Has(caps.ServerTime) || session.capabilities.Has(caps.AccountTag)) {
178
-			if m.plain != nil {
178
+		} else if m.plain != nil {
179
+			// plain == nil indicates a TAGMSG
180
+			if !(session.capabilities.Has(caps.ServerTime) || session.capabilities.Has(caps.AccountTag)) {
179
 				session.sendBytes(m.plain, false)
181
 				session.sendBytes(m.plain, false)
182
+			} else {
183
+				// slowpath
184
+				session.sendFromClientInternal(false, m.time, m.msgid, m.source, m.accountName, nil, m.command, m.params...)
180
 			}
185
 			}
181
-		} else {
182
-			session.sendFromClientInternal(false, m.time, m.msgid, m.source, m.accountName, nil, m.command, m.params...)
183
 		}
186
 		}
184
 	} else if m.fullTagsMultiline != nil {
187
 	} else if m.fullTagsMultiline != nil {
188
+		// InitializeSplitMessage() path:
185
 		if session.capabilities.Has(caps.Multiline) {
189
 		if session.capabilities.Has(caps.Multiline) {
186
 			for _, line := range m.fullTagsMultiline {
190
 			for _, line := range m.fullTagsMultiline {
187
 				session.sendBytes(line, false)
191
 				session.sendBytes(line, false)
191
 				session.sendBytes(line, false)
195
 				session.sendBytes(line, false)
192
 			}
196
 			}
193
 		} else {
197
 		} else {
198
+			// slowpath
194
 			session.sendSplitMsgFromClientInternal(false, m.source, m.accountName, m.tags, m.command, m.target, m.splitMessage)
199
 			session.sendSplitMsgFromClientInternal(false, m.source, m.accountName, m.tags, m.command, m.target, m.splitMessage)
195
 		}
200
 		}
196
 	}
201
 	}

Loading…
Cancel
Save