summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-03-09 22:40:01 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-03-09 22:40:01 +0300
commit4f530bd374b842139b174d07e6926aaa421457d9 (patch)
tree5fbfc912d30dd7206dd1ec2501e83fe0d174a9a5
parente6add7951f526ddaea6b7874ce767c07eae806b0 (diff)
Jabber: inline picture message to be confirmed too
-rwxr-xr-xprotocols/JabberG/src/jabber_misc.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/protocols/JabberG/src/jabber_misc.cpp b/protocols/JabberG/src/jabber_misc.cpp
index b6fab6c4aa..1fd7302e72 100755
--- a/protocols/JabberG/src/jabber_misc.cpp
+++ b/protocols/JabberG/src/jabber_misc.cpp
@@ -467,6 +467,15 @@ static bool SaveBlobToFile(const wchar_t *pwszFileName, const CMStringA &body)
void CJabberProto::OnGetBob(const TiXmlElement *node, CJabberIqInfo *pReq)
{
+ auto pMark = ((CChatMark *)pReq->GetUserData());
+ if (pMark) {
+ XmlNode reply("message"); reply << XATTR("to", pMark->szFrom) << XATTR("id", pMark->szId)
+ << XCHILDNS("displayed", JABBER_FEAT_CHAT_MARKERS) << XATTR("id", pMark->szId);
+ m_ThreadInfo->send(reply);
+
+ delete pMark;
+ }
+
if (auto *data = XmlFirstChild(node, "data")) {
if (auto *cid = XmlGetAttr(data, "cid")) {
if (auto *src = data->GetText()) {
@@ -528,7 +537,10 @@ CMStringA CJabberProto::ExtractImage(const TiXmlElement *node)
// XEP-0231: Bits Of Bytes
else if (strSrc.Left(9) == "cid:sha1+" && strSrc.Right(13) == "@bob.xmpp.org") {
- auto *pIQ = AddIQ(&CJabberProto::OnGetBob, JABBER_IQ_TYPE_GET, XmlGetAttr(node, "from"));
+ auto *szMsgId = XmlGetAttr(node, "id"), *szFrom = XmlGetAttr(node, "from");
+ auto *pMark = (szMsgId && szFrom) ? new CChatMark(0, szMsgId, szFrom) : nullptr;
+
+ auto *pIQ = AddIQ(&CJabberProto::OnGetBob, JABBER_IQ_TYPE_GET, XmlGetAttr(node, "from"), pMark);
pIQ->SetParamsToParse(JABBER_IQ_PARSE_HCONTACT);
strSrc.Delete(0, 4);