Procházet zdrojové kódy

fix incorrect TAGMSG relaying

tags/v2.5.0-rc1
Shivaram Lingamneni před 3 roky
rodič
revize
1b91360885
1 změnil soubory, kde provedl 9 přidání a 4 odebrání
  1. 9
    4
      irc/message_cache.go

+ 9
- 4
irc/message_cache.go Zobrazit soubor

@@ -172,16 +172,20 @@ func (m *MessageCache) InitializeSplitMessage(server *Server, nickmask, accountN
172 172
 
173 173
 func (m *MessageCache) Send(session *Session) {
174 174
 	if m.fullTags != nil {
175
+		// Initialize() path:
175 176
 		if session.capabilities.Has(caps.MessageTags) {
176 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 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 187
 	} else if m.fullTagsMultiline != nil {
188
+		// InitializeSplitMessage() path:
185 189
 		if session.capabilities.Has(caps.Multiline) {
186 190
 			for _, line := range m.fullTagsMultiline {
187 191
 				session.sendBytes(line, false)
@@ -191,6 +195,7 @@ func (m *MessageCache) Send(session *Session) {
191 195
 				session.sendBytes(line, false)
192 196
 			}
193 197
 		} else {
198
+			// slowpath
194 199
 			session.sendSplitMsgFromClientInternal(false, m.source, m.accountName, m.tags, m.command, m.target, m.splitMessage)
195 200
 		}
196 201
 	}

Načítá se…
Zrušit
Uložit