diff options
author | George Hazan <ghazan@miranda.im> | 2020-06-13 13:39:20 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2020-06-13 13:39:20 +0300 |
commit | aa0da94a9f2adfbeb735f75124d8c4e5c68b134b (patch) | |
tree | cebc6b74b17f6c207c84521c723c901aea4093ed | |
parent | 0b55f3a03f6fa86a64237ee3212a0c48bdff0b8c (diff) |
fixes #1149 (wrong MAM preferences processing)
-rwxr-xr-x | protocols/JabberG/src/jabber_iqid.cpp | 1 | ||||
-rw-r--r-- | protocols/JabberG/src/jabber_mam.cpp | 21 | ||||
-rwxr-xr-x | protocols/JabberG/src/jabber_opt.cpp | 2 | ||||
-rwxr-xr-x | protocols/JabberG/src/jabber_proto.h | 1 |
4 files changed, 14 insertions, 11 deletions
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<CJabberProto>, public IJabberInterface bool m_bSendKeepAlive;
bool m_bPepSupported;
bool m_bStreamSent;
+ bool m_bMamPrefsAvailable;
HWND m_hwndAgentRegInput;
HWND m_hwndRegProgress;
|