From bb70b6c629e2d422f4bd648cf4b251456a15a643 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Mon, 23 Aug 2010 15:06:03 +0000 Subject: check domain of incoming packets --- src/QXmppIncomingServer.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/QXmppIncomingServer.cpp') diff --git a/src/QXmppIncomingServer.cpp b/src/QXmppIncomingServer.cpp index 32f83120..ea8702e3 100644 --- a/src/QXmppIncomingServer.cpp +++ b/src/QXmppIncomingServer.cpp @@ -35,7 +35,7 @@ class QXmppIncomingServerPrivate { public: - bool authenticated; + QString authenticated; QString domain; QString localStreamId; }; @@ -53,7 +53,6 @@ QXmppIncomingServer::QXmppIncomingServer(QSslSocket *socket, const QString &doma { setObjectName("S2S-in"); setSocket(socket); - d->authenticated = false; d->domain = domain; } @@ -125,7 +124,7 @@ void QXmppIncomingServer::handleStanza(const QDomElement &stanza) if (request.command() == QXmppDialback::Result) { - // etablish dialback connection + // establish dialback connection QXmppOutgoingServer *stream = new QXmppOutgoingServer(d->domain, this); stream->setLogger(logger()); stream->setObjectName("S2S-dialback-" + domain); @@ -144,7 +143,7 @@ void QXmppIncomingServer::handleStanza(const QDomElement &stanza) emit dialbackRequestReceived(request); } - } else if (d->authenticated) { + } else if (!d->authenticated.isEmpty() && stanza.attribute("from").split("@").last() == d->authenticated) { // relay packets if the remote party is authenticated bool handled = false; emit elementReceived(stanza, handled); @@ -159,7 +158,7 @@ void QXmppIncomingServer::handleStanza(const QDomElement &stanza) bool QXmppIncomingServer::isConnected() const { - return QXmppStream::isConnected() && d->authenticated; + return QXmppStream::isConnected() && !d->authenticated.isEmpty(); } /// Handles a dialback response received from the authority server. @@ -172,7 +171,8 @@ void QXmppIncomingServer::slotDialbackResponseReceived(const QXmppDialback &dial QXmppOutgoingServer *stream = qobject_cast(sender()); if (!stream || dialback.command() != QXmppDialback::Verify || - dialback.id() != d->localStreamId) + dialback.id() != d->localStreamId || + dialback.from() != stream->configuration().domain()) return; // relay verify response -- cgit v1.2.3