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