summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-06-13 13:39:20 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-06-13 13:39:20 +0300
commitaa0da94a9f2adfbeb735f75124d8c4e5c68b134b (patch)
treecebc6b74b17f6c207c84521c723c901aea4093ed
parent0b55f3a03f6fa86a64237ee3212a0c48bdff0b8c (diff)
fixes #1149 (wrong MAM preferences processing)
-rwxr-xr-xprotocols/JabberG/src/jabber_iqid.cpp1
-rw-r--r--protocols/JabberG/src/jabber_mam.cpp21
-rwxr-xr-xprotocols/JabberG/src/jabber_opt.cpp2
-rwxr-xr-xprotocols/JabberG/src/jabber_proto.h1
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;