summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2022-05-26 17:40:15 +0300
committerGeorge Hazan <ghazan@miranda.im>2022-05-26 17:40:15 +0300
commit91221d792fba0491750083ccae15424d71f28e61 (patch)
tree848f6db8103d6c26666c0fb48ea31e4320795815
parent9bcd634faa1089b97b7db84484d3f165739bea0a (diff)
Jabber: attempt to fix OMEMO
-rw-r--r--protocols/JabberG/src/jabber_iqid.cpp11
-rw-r--r--protocols/JabberG/src/jabber_thread.cpp6
2 files changed, 8 insertions, 9 deletions
diff --git a/protocols/JabberG/src/jabber_iqid.cpp b/protocols/JabberG/src/jabber_iqid.cpp
index 64c1c7d071..4056dca118 100644
--- a/protocols/JabberG/src/jabber_iqid.cpp
+++ b/protocols/JabberG/src/jabber_iqid.cpp
@@ -1069,14 +1069,13 @@ void CJabberProto::OnIqResultSetVcard(const TiXmlElement *iqNode, CJabberIqInfo*
SendPresence(m_iStatus, false);
}
}
+
void CJabberProto::OnIqResultGetOmemodevicelist(const TiXmlElement* iqNode, CJabberIqInfo*)
{
- auto* itemsNode = XmlGetChildByTag(iqNode, "items", "node", JABBER_FEAT_OMEMO ".devicelist");
- auto from = XmlGetAttr(iqNode, "from");
- if (itemsNode) {
- OmemoHandleDeviceList(from, itemsNode);
- return;
- }
+ if (const char *from = XmlGetAttr(iqNode, "from"))
+ if (auto *pubsubNode = XmlGetChildByTag(iqNode, "pubsub", "xmlns", JABBER_FEAT_PUBSUB))
+ if (auto *itemsNode = XmlGetChildByTag(pubsubNode, "items", "node", JABBER_FEAT_OMEMO ".devicelist"))
+ OmemoHandleDeviceList(from, itemsNode);
}
void CJabberProto::OnIqResultSetSearch(const TiXmlElement *iqNode, CJabberIqInfo*)
diff --git a/protocols/JabberG/src/jabber_thread.cpp b/protocols/JabberG/src/jabber_thread.cpp
index d68fd7f2d4..7c7ad3e2dc 100644
--- a/protocols/JabberG/src/jabber_thread.cpp
+++ b/protocols/JabberG/src/jabber_thread.cpp
@@ -1571,9 +1571,9 @@ void CJabberProto::OnProcessPresence(const TiXmlElement *node, ThreadData *info)
}
if (hContact && m_bUseOMEMO) {
- XmlNodeIq iq("get", SerialNext());
- iq << XATTR("from", m_ThreadInfo->fullJID);
- iq << XATTR("to", from);
+ XmlNodeIq iq(AddIQ(&CJabberProto::OnIqResultGetOmemodevicelist, JABBER_IQ_TYPE_GET));
+ iq << XATTR("from", szBareOurJid);
+ iq << XATTR("to", szBareFrom);
iq << XCHILDNS("pubsub", "http://jabber.org/protocol/pubsub")
<< XCHILD("items") << XATTR("node", JABBER_FEAT_OMEMO ".devicelist");
m_ThreadInfo->send(