summaryrefslogtreecommitdiff
path: root/protocols/JabberG/src/jabber_thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/JabberG/src/jabber_thread.cpp')
-rwxr-xr-xprotocols/JabberG/src/jabber_thread.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/protocols/JabberG/src/jabber_thread.cpp b/protocols/JabberG/src/jabber_thread.cpp
index fb01d0f0c5..30a2128c29 100755
--- a/protocols/JabberG/src/jabber_thread.cpp
+++ b/protocols/JabberG/src/jabber_thread.cpp
@@ -1165,6 +1165,11 @@ void CJabberProto::OnProcessMessage(const TiXmlElement *node, ThreadData *info)
if (bodyNode != nullptr)
szMessage.Append(bodyNode->GetText());
+ // check MAM support
+ const char *szMsgId = nullptr;
+ if (auto *n = XmlGetChildByTag(node, "stanza-id", "xmlns", JABBER_FEAT_SID))
+ szMsgId = n->GetText();
+
// If message is from a stranger (not in roster), item is nullptr
JABBER_LIST_ITEM *item = ListGetItemPtr(LIST_ROSTER, from);
if (item == nullptr)
@@ -1398,11 +1403,11 @@ void CJabberProto::OnProcessMessage(const TiXmlElement *node, ThreadData *info)
}
recv.timestamp = (DWORD)msgTime;
recv.szMessage = szMessage.GetBuffer();
- if (bSendMark) {
- recv.szMsgId = idStr;
- recv.lParam = (LPARAM)from;
- }
- ProtoChainRecvMsg(hContact, &recv);
+ recv.szMsgId = szMsgId;
+
+ MEVENT hDbEVent = (MEVENT)ProtoChainRecvMsg(hContact, &recv);
+ if (idStr)
+ m_arChatMarks.insert(new CChatMark(hDbEVent, idStr, from));
}
// XEP-0115: Entity Capabilities