From 196e01a2ca9f8aefbd3ac55eedc955f56d3d6428 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 13 Oct 2017 00:38:23 +0300 Subject: fixes #987 (more fixes for clients that don't support XEP-0115) --- protocols/JabberG/src/jabber_thread.cpp | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) (limited to 'protocols/JabberG/src/jabber_thread.cpp') diff --git a/protocols/JabberG/src/jabber_thread.cpp b/protocols/JabberG/src/jabber_thread.cpp index f2518a4e20..e8e0e2c381 100755 --- a/protocols/JabberG/src/jabber_thread.cpp +++ b/protocols/JabberG/src/jabber_thread.cpp @@ -1455,7 +1455,12 @@ void CJabberProto::OnProcessPresenceCapabilites(HXML node, pResourceStatus &r) bin2hexW(hashOut, _countof(hashOut), szHashOut); r->m_pCaps = m_clientCapsManager.GetPartialCaps(szNode, szHashOut); if (r->m_pCaps == nullptr) - r->m_pCaps = m_clientCapsManager.SetClientCaps(szNode, szHashOut, szVer, JABBER_RESOURCE_CAPS_NONE); + GetCachedCaps(szNode, szHashOut, r); + + if (r->m_pCaps == nullptr) { + r->m_pCaps = m_clientCapsManager.SetClientCaps(szNode, szHashOut, szVer, JABBER_RESOURCE_CAPS_UNINIT); + RequestOldCapsInfo(r, from); + } MCONTACT hContact = HContactFromJID(from); if (hContact) @@ -1463,22 +1468,8 @@ void CJabberProto::OnProcessPresenceCapabilites(HXML node, pResourceStatus &r) } else { r->m_pCaps = m_clientCapsManager.GetPartialCaps(szNode, szVer); - if (r->m_pCaps == nullptr) { - CMStringA szName(FORMAT, "%S#%S", szNode, szVer); - ptrA szValue(db_get_sa(0, "JabberCaps", szName)); - if (szValue != 0) { - JSONNode root = JSONNode::parse(szValue); - if (root) { - CMStringW wszCaps = root["c"].as_mstring(); - r->m_pCaps = m_clientCapsManager.SetClientCaps(szNode, szVer, nullptr, _wtoi64(wszCaps)); - r->m_pCaps->m_szOs = mir_wstrdup(root["o"].as_mstring()); - r->m_pCaps->m_szOsVer = mir_wstrdup(root["ov"].as_mstring()); - r->m_pCaps->m_szSoft = mir_wstrdup(root["s"].as_mstring()); - r->m_pCaps->m_szSoftVer = mir_wstrdup(root["sv"].as_mstring()); - r->m_pCaps->m_szSoftMir = mir_wstrdup(root["sm"].as_mstring()); - } - } - } + if (r->m_pCaps == nullptr) + GetCachedCaps(szNode, szVer, r); if (r->m_pCaps == nullptr) { r->m_pCaps = m_clientCapsManager.SetClientCaps(szNode, szVer, L"", JABBER_RESOURCE_CAPS_UNINIT); -- cgit v1.2.3