diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-03 14:37:57 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-03 14:37:57 +0200 |
| commit | 3d6c785660ffcd982e97e8e80e7ecc3a05e022ef (patch) | |
| tree | d2e63dae0074e6a03abb5432c8e5cda9f2c57549 /src/client | |
| parent | 66af3052ce1754b8617599428b9070c0f2bb02b1 (diff) | |
| download | qxmpp-3d6c785660ffcd982e97e8e80e7ecc3a05e022ef.tar.gz | |
add QXmppClient::isAuthenticated
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/QXmppClient.cpp | 7 | ||||
| -rw-r--r-- | src/client/QXmppClient.h | 1 | ||||
| -rw-r--r-- | src/client/QXmppOutgoingClient.cpp | 12 | ||||
| -rw-r--r-- | src/client/QXmppOutgoingClient.h | 1 |
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(); }; |
