diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-23 15:06:03 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-23 15:06:03 +0000 |
| commit | bb70b6c629e2d422f4bd648cf4b251456a15a643 (patch) | |
| tree | 150687615f8b774c9804ef4f8f3263dc51bfc060 /src | |
| parent | 0c1166055f618f150e9489c1fa21ea564702b72e (diff) | |
| download | qxmpp-bb70b6c629e2d422f4bd648cf4b251456a15a643.tar.gz | |
check domain of incoming packets
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppIncomingServer.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
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<QXmppOutgoingServer*>(sender()); if (!stream || dialback.command() != QXmppDialback::Verify || - dialback.id() != d->localStreamId) + dialback.id() != d->localStreamId || + dialback.from() != stream->configuration().domain()) return; // relay verify response |
