From aa0da94a9f2adfbeb735f75124d8c4e5c68b134b Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 13 Jun 2020 13:39:20 +0300 Subject: fixes #1149 (wrong MAM preferences processing) --- protocols/JabberG/src/jabber_iqid.cpp | 1 + protocols/JabberG/src/jabber_mam.cpp | 21 +++++++++++---------- protocols/JabberG/src/jabber_opt.cpp | 2 +- protocols/JabberG/src/jabber_proto.h | 1 + 4 files changed, 14 insertions(+), 11 deletions(-) (limited to 'protocols/JabberG') diff --git a/protocols/JabberG/src/jabber_iqid.cpp b/protocols/JabberG/src/jabber_iqid.cpp index bdaa73dc5d..690e936ad8 100755 --- a/protocols/JabberG/src/jabber_iqid.cpp +++ b/protocols/JabberG/src/jabber_iqid.cpp @@ -169,6 +169,7 @@ void CJabberProto::OnProcessLoginRq(ThreadData *info, DWORD rq) void CJabberProto::OnLoggedIn() { + m_bMamPrefsAvailable = false; m_bJabberOnline = true; m_tmJabberLoggedInTime = time(0); diff --git a/protocols/JabberG/src/jabber_mam.cpp b/protocols/JabberG/src/jabber_mam.cpp index 0e29619eed..43e80d76b8 100644 --- a/protocols/JabberG/src/jabber_mam.cpp +++ b/protocols/JabberG/src/jabber_mam.cpp @@ -29,17 +29,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. void CJabberProto::OnIqResultMamInfo(const TiXmlElement *iqNode, CJabberIqInfo *pInfo) { - if (pInfo->GetIqType() != JABBER_IQ_TYPE_RESULT) - return; + if (pInfo->GetIqType() == JABBER_IQ_TYPE_RESULT) { + if (auto *n = XmlFirstChild(iqNode, "prefs")) { + m_bMamPrefsAvailable = true; - if (auto *n = XmlFirstChild(iqNode, "prefs")) { - if (auto *type = n->Attribute("default")) { - if (!strcmp(type, "never")) - m_iMamMode = 0; - else if (!strcmp(type, "roster")) - m_iMamMode = 1; - else - m_iMamMode = 2; + if (auto *type = n->Attribute("default")) { + if (!strcmp(type, "never")) + m_iMamMode = 0; + else if (!strcmp(type, "roster")) + m_iMamMode = 1; + else + m_iMamMode = 2; + } } } diff --git a/protocols/JabberG/src/jabber_opt.cpp b/protocols/JabberG/src/jabber_opt.cpp index 65d95086e9..acc94be5fd 100755 --- a/protocols/JabberG/src/jabber_opt.cpp +++ b/protocols/JabberG/src/jabber_opt.cpp @@ -436,7 +436,7 @@ protected: for (auto &it : szMamModes) m_cbMam.AddString(it, int(&it - szMamModes)); m_cbMam.SetCurSel(m_proto->m_iMamMode); - m_cbMam.Enable(m_proto->m_ThreadInfo && (m_proto->m_ThreadInfo->jabberServerCaps & JABBER_CAPS_MAM)); + m_cbMam.Enable(m_proto->m_bMamPrefsAvailable); // append computer name to the resource list wchar_t szCompName[MAX_COMPUTERNAME_LENGTH + 1]; diff --git a/protocols/JabberG/src/jabber_proto.h b/protocols/JabberG/src/jabber_proto.h index f6a292029e..b6a599c496 100755 --- a/protocols/JabberG/src/jabber_proto.h +++ b/protocols/JabberG/src/jabber_proto.h @@ -248,6 +248,7 @@ struct CJabberProto : public PROTO, public IJabberInterface bool m_bSendKeepAlive; bool m_bPepSupported; bool m_bStreamSent; + bool m_bMamPrefsAvailable; HWND m_hwndAgentRegInput; HWND m_hwndRegProgress; -- cgit v1.2.3