aboutsummaryrefslogtreecommitdiff
path: root/src/server/QXmppIncomingClient.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@wifirst.fr>2012-06-07 15:23:06 +0200
committerJeremy Lainé <jeremy.laine@wifirst.fr>2012-06-07 15:23:06 +0200
commit875bc27088fb6016bb5bf18f7b8672b20505051a (patch)
tree0b81b457bd3d4d2633d8a67b5844659eb740204e /src/server/QXmppIncomingClient.cpp
parent2e4a54dd23df7f8531cfcf36fbbcfe563e13e84b (diff)
improve server debugging
Diffstat (limited to 'src/server/QXmppIncomingClient.cpp')
-rw-r--r--src/server/QXmppIncomingClient.cpp59
1 files changed, 42 insertions, 17 deletions
diff --git a/src/server/QXmppIncomingClient.cpp b/src/server/QXmppIncomingClient.cpp
index df553e0f..082531f6 100644
--- a/src/server/QXmppIncomingClient.cpp
+++ b/src/server/QXmppIncomingClient.cpp
@@ -41,6 +41,7 @@
class QXmppIncomingClientPrivate
{
public:
+ QXmppIncomingClientPrivate(QXmppIncomingClient *qq);
QTimer *idleTimer;
QString domain;
@@ -50,8 +51,26 @@ public:
QXmppSaslDigestMd5 saslDigest;
int saslDigestStep;
QString saslDigestUsername;
+
+ QString origin() const;
+
+private:
+ QXmppIncomingClient *q;
};
+QXmppIncomingClientPrivate::QXmppIncomingClientPrivate(QXmppIncomingClient *qq)
+ : idleTimer(0)
+ , passwordChecker(0)
+ , saslDigestStep(0)
+ , q(qq)
+{
+}
+
+QString QXmppIncomingClientPrivate::origin() const
+{
+ return q->socket()->peerAddress().toString() + " " + QString::number(q->socket()->peerPort());
+}
+
/// Constructs a new incoming client stream.
///
/// \param socket The socket for the XMPP stream.
@@ -60,27 +79,28 @@ public:
///
QXmppIncomingClient::QXmppIncomingClient(QSslSocket *socket, const QString &domain, QObject *parent)
- : QXmppStream(parent),
- d(new QXmppIncomingClientPrivate)
+ : QXmppStream(parent)
{
- d->passwordChecker = 0;
+ bool check;
+ Q_UNUSED(check);
+
+ d = new QXmppIncomingClientPrivate(this);
d->domain = domain;
- d->saslDigestStep = 0;
- if (socket) {
- info(QString("Incoming client connection from %1 %2").arg(
- socket->peerAddress().toString(),
- QString::number(socket->peerPort())));
- setSocket(socket);
- }
+ check = connect(socket, SIGNAL(disconnected()),
+ this, SLOT(onSocketDisconnected()));
+ Q_ASSERT(check);
+
+ setSocket(socket);
+
+ info(QString("Incoming client connection from %1").arg(d->origin()));
// create inactivity timer
d->idleTimer = new QTimer(this);
d->idleTimer->setSingleShot(true);
- bool check = connect(d->idleTimer, SIGNAL(timeout()),
+ check = connect(d->idleTimer, SIGNAL(timeout()),
this, SLOT(onTimeout()));
Q_ASSERT(check);
- Q_UNUSED(check);
}
/// Destroys the current stream.
@@ -285,7 +305,7 @@ void QXmppIncomingClient::handleStanza(const QDomElement &nodeRecv)
// authentication succeeded
d->saslDigestStep = 3;
d->jid = QString("%1@%2").arg(d->saslDigestUsername, d->domain);
- info(QString("Authentication succeeded for '%1'").arg(d->jid));
+ info(QString("Authentication succeeded for '%1' from %2").arg(d->jid, d->origin()));
sendData("<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>");
handleStart();
}
@@ -415,26 +435,31 @@ void QXmppIncomingClient::onPasswordReply()
switch (reply->error()) {
case QXmppPasswordReply::NoError:
d->jid = jid;
- info(QString("Authentication succeeded for '%1'").arg(d->jid));
+ info(QString("Authentication succeeded for '%1' from %2").arg(d->jid, d->origin()));
sendData("<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>");
handleStart();
break;
case QXmppPasswordReply::AuthorizationError:
- warning(QString("Authentication failed for '%1'").arg(jid));
+ warning(QString("Authentication failed for '%1' from %2").arg(jid, d->origin()));
sendData("<failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><not-authorized/></failure>");
disconnectFromHost();
break;
case QXmppPasswordReply::TemporaryError:
- warning(QString("Temporary authentication failure for '%1'").arg(jid));
+ warning(QString("Temporary authentication failure for '%1' from %2").arg(jid, d->origin()));
sendData("<failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><temporary-auth-failure/></failure>");
disconnectFromHost();
break;
}
}
+void QXmppIncomingClient::onSocketDisconnected()
+{
+ info(QString("Socket disconnected for '%1' from %2").arg(d->jid, d->origin()));
+}
+
void QXmppIncomingClient::onTimeout()
{
- warning(QString("Idle timeout for '%1'").arg(d->jid));
+ warning(QString("Idle timeout for '%1' from %2").arg(d->jid, d->origin()));
disconnectFromHost();
// make sure disconnected() gets emitted no matter what