From e7179d7a6ec6299a11e0f51e6c92ae5ba22144d2 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 6 Sep 2017 19:21:37 +0300 Subject: Jabber: partially restored ability to process caps from old clients that do not support XEP-0115 --- protocols/JabberG/src/jabber_caps.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'protocols/JabberG/src') diff --git a/protocols/JabberG/src/jabber_caps.cpp b/protocols/JabberG/src/jabber_caps.cpp index e3863e7ea9..3c716018a4 100755 --- a/protocols/JabberG/src/jabber_caps.cpp +++ b/protocols/JabberG/src/jabber_caps.cpp @@ -293,7 +293,20 @@ JabberCapsBits CJabberProto::GetResourceCapabilites(const wchar_t *jid, bool app return jcbCaps | r->m_jcbManualDiscoveredCaps; } - return JABBER_RESOURCE_CAPS_NONE; + // no XEP-0115: send query each time it's needed + switch(r->m_dwDiscoInfoRequestTime) { + case -1: + return r->m_jcbCachedCaps; + + case 0: + CJabberIqInfo *pInfo = AddIQ(&CJabberProto::OnIqResultCapsDiscoInfo, JABBER_IQ_TYPE_GET, fullJid, JABBER_IQ_PARSE_FROM | JABBER_IQ_PARSE_CHILD_TAG_NODE); + pInfo->SetTimeout(JABBER_RESOURCE_CAPS_QUERY_TIMEOUT); + r->m_dwDiscoInfoRequestTime = pInfo->GetRequestTime(); + + m_ThreadInfo->send(XmlNodeIq(pInfo) << XQUERY(JABBER_FEAT_DISCO_INFO)); + break; + } + return JABBER_RESOURCE_CAPS_IN_PROGRESS; } ///////////////////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3