Просмотр исходного кода

fix incorrect TAGMSG relaying

tags/v2.5.0-rc1
Shivaram Lingamneni 3 лет назад
Родитель
Сommit
1b91360885
1 измененных файлов: 9 добавлений и 4 удалений
  1. 9
    4
      irc/message_cache.go

+ 9
- 4
irc/message_cache.go Просмотреть файл

@@ -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
 	}

Загрузка…
Отмена
Сохранить