aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/QXmppIncomingServer.cpp12
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