From a89181602654a01a36c0a67304d18a1d3ac83131 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Mon, 9 Aug 2010 09:36:37 +0000 Subject: fully parse JID returned in Bind IQ, needed for SASL anonymous authentication (issue #57) --- source/QXmppStream.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'source/QXmppStream.cpp') diff --git a/source/QXmppStream.cpp b/source/QXmppStream.cpp index f2f712ca..b888a521 100644 --- a/source/QXmppStream.cpp +++ b/source/QXmppStream.cpp @@ -506,9 +506,18 @@ void QXmppStream::parser(const QByteArray& data) // bind result if (bind.type() == QXmppIq::Result) { - QString resource = jidToResource(bind.jid()); - if (!resource.isEmpty()) - configuration().setResource(resource); + if (!bind.jid().isEmpty()) + { + QRegExp jidRegex("^([^@/]+)@([^@/]+)/(.+)$"); + if (jidRegex.exactMatch(bind.jid())) + { + configuration().setUser(jidRegex.cap(1)); + configuration().setDomain(jidRegex.cap(2)); + configuration().setResource(jidRegex.cap(3)); + } else { + warning("Bind IQ received with invalid JID: " + bind.jid()); + } + } if (m_sessionAvailable) sendSessionIQ(); } -- cgit v1.2.3