diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/QXmppStream.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
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(); } |
