aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-09-03 14:37:57 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-09-03 14:37:57 +0200
commit3d6c785660ffcd982e97e8e80e7ecc3a05e022ef (patch)
treed2e63dae0074e6a03abb5432c8e5cda9f2c57549 /src/client
parent66af3052ce1754b8617599428b9070c0f2bb02b1 (diff)
downloadqxmpp-3d6c785660ffcd982e97e8e80e7ecc3a05e022ef.tar.gz
add QXmppClient::isAuthenticated
Diffstat (limited to 'src/client')
-rw-r--r--src/client/QXmppClient.cpp7
-rw-r--r--src/client/QXmppClient.h1
-rw-r--r--src/client/QXmppOutgoingClient.cpp12
-rw-r--r--src/client/QXmppOutgoingClient.h1
4 files changed, 21 insertions, 0 deletions
diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp
index 8ad4e523..a317598e 100644
--- a/src/client/QXmppClient.cpp
+++ b/src/client/QXmppClient.cpp
@@ -348,6 +348,13 @@ void QXmppClient::disconnectFromServer()
d->stream->disconnectFromHost();
}
+/// Returns true if the client has authenticated with the XMPP server.
+
+bool QXmppClient::isAuthenticated() const
+{
+ return d->stream->isAuthenticated();
+}
+
/// Returns true if the client is connected to the XMPP server.
///
diff --git a/src/client/QXmppClient.h b/src/client/QXmppClient.h
index b6661f96..05161a50 100644
--- a/src/client/QXmppClient.h
+++ b/src/client/QXmppClient.h
@@ -137,6 +137,7 @@ public:
void connectToServer(const QXmppConfiguration&,
const QXmppPresence& initialPresence =
QXmppPresence());
+ bool isAuthenticated() const;
bool isConnected() const;
QXmppPresence clientPresence() const;
diff --git a/src/client/QXmppOutgoingClient.cpp b/src/client/QXmppOutgoingClient.cpp
index 2fae2736..1298c593 100644
--- a/src/client/QXmppOutgoingClient.cpp
+++ b/src/client/QXmppOutgoingClient.cpp
@@ -84,6 +84,7 @@ public:
bool sessionStarted;
// Authentication
+ bool isAuthenticated;
QString nonSASLAuthId;
QXmppSaslClient *saslClient;
@@ -98,6 +99,7 @@ private:
QXmppOutgoingClientPrivate::QXmppOutgoingClientPrivate(QXmppOutgoingClient *qq)
: redirectPort(0)
, sessionAvailable(false)
+ , isAuthenticated(false)
, saslClient(0)
, q(qq)
{
@@ -219,6 +221,13 @@ void QXmppOutgoingClient::_q_dnsLookupFinished()
}
}
+/// Returns true if authentication has succeeded.
+
+bool QXmppOutgoingClient::isAuthenticated() const
+{
+ return d->isAuthenticated;
+}
+
/// Returns true if the socket is connected and a session has been started.
bool QXmppOutgoingClient::isConnected() const
@@ -229,6 +238,7 @@ bool QXmppOutgoingClient::isConnected() const
void QXmppOutgoingClient::_q_socketDisconnected()
{
debug("Socket disconnected");
+ d->isAuthenticated = false;
if (!d->redirectHost.isEmpty() && d->redirectPort > 0) {
d->connectToHost(d->redirectHost, d->redirectPort);
d->redirectHost = QString();
@@ -477,6 +487,7 @@ void QXmppOutgoingClient::handleStanza(const QDomElement &nodeRecv)
if(nodeRecv.tagName() == "success")
{
debug("Authenticated");
+ d->isAuthenticated = true;
handleStart();
}
else if(nodeRecv.tagName() == "challenge")
@@ -570,6 +581,7 @@ void QXmppOutgoingClient::handleStanza(const QDomElement &nodeRecv)
{
// successful Non-SASL Authentication
debug("Authenticated (Non-SASL)");
+ d->isAuthenticated = true;
// xmpp connection made
d->sessionStarted = true;
diff --git a/src/client/QXmppOutgoingClient.h b/src/client/QXmppOutgoingClient.h
index 3356dc3f..e798593e 100644
--- a/src/client/QXmppOutgoingClient.h
+++ b/src/client/QXmppOutgoingClient.h
@@ -53,6 +53,7 @@ public:
~QXmppOutgoingClient();
void connectToHost();
+ bool isAuthenticated() const;
bool isConnected() const;
QSslSocket *socket() const { return QXmppStream::socket(); };