From 02294cc0cf4e9a658da33e8d91896a4b6f2f9e8c Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Wed, 25 Feb 2015 09:00:17 +0100 Subject: clean up support for 'bad-auth' replies, see #36 --- src/base/QXmppStanza.cpp | 4 ---- src/base/QXmppStanza.h | 3 +-- src/client/QXmppOutgoingClient.cpp | 7 ++++--- 3 files changed, 5 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/base/QXmppStanza.cpp b/src/base/QXmppStanza.cpp index b840a06b..1e512145 100644 --- a/src/base/QXmppStanza.cpp +++ b/src/base/QXmppStanza.cpp @@ -291,8 +291,6 @@ QString QXmppStanza::Error::getConditionStr() const return "undefined-condition"; case UnexpectedRequest: return "unexpected-request"; - case BadAuth: - return "bad-auth"; default: return ""; } @@ -360,8 +358,6 @@ void QXmppStanza::Error::setConditionFromStr(const QString& type) setCondition(UndefinedCondition); else if(type == "unexpected-request") setCondition(UnexpectedRequest); - else if(type == "bad-auth") - setCondition(BadAuth); else setCondition(static_cast(-1)); } diff --git a/src/base/QXmppStanza.h b/src/base/QXmppStanza.h index d5cd205d..4583bcd3 100644 --- a/src/base/QXmppStanza.h +++ b/src/base/QXmppStanza.h @@ -125,8 +125,7 @@ public: ServiceUnavailable, SubscriptionRequired, UndefinedCondition, - UnexpectedRequest, - BadAuth + UnexpectedRequest }; Error(); diff --git a/src/client/QXmppOutgoingClient.cpp b/src/client/QXmppOutgoingClient.cpp index cc14dbdf..f82ae807 100644 --- a/src/client/QXmppOutgoingClient.cpp +++ b/src/client/QXmppOutgoingClient.cpp @@ -538,10 +538,11 @@ void QXmppOutgoingClient::handleStanza(const QDomElement &nodeRecv) QXmppSaslFailure failure; failure.parse(nodeRecv); - if (failure.condition() == "not-authorized") + // RFC3920 defines the error condition as "not-authorized", but + // some broken servers use "bad-auth" instead. We tolerate this + // by remapping the error to "not-authorized". + if (failure.condition() == "not-authorized" || failure.condition() == "bad-auth") d->xmppStreamError = QXmppStanza::Error::NotAuthorized; - else if (failure.condition() == "bad-auth") - d->xmppStreamError = QXmppStanza::Error::BadAuth; else d->xmppStreamError = QXmppStanza::Error::UndefinedCondition; emit error(QXmppClient::XmppStreamError); -- cgit v1.2.3