diff options
Diffstat (limited to 'src/QXmppIncomingClient.cpp')
| -rw-r--r-- | src/QXmppIncomingClient.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/QXmppIncomingClient.cpp b/src/QXmppIncomingClient.cpp index 83b15cc0..ace50158 100644 --- a/src/QXmppIncomingClient.cpp +++ b/src/QXmppIncomingClient.cpp @@ -61,7 +61,7 @@ QXmppIncomingClient::QXmppIncomingClient(QSslSocket *socket, const QString &doma d->passwordChecker = 0; d->domain = domain; - setObjectName("C2S"); + setObjectName("C2S-in"); setSocket(socket); // create inactivity timer @@ -118,8 +118,6 @@ void QXmppIncomingClient::setPasswordChecker(QXmppPasswordChecker *checker) void QXmppIncomingClient::handleStream(const QDomElement &streamElement) { - Q_UNUSED(streamElement); - d->idleTimer->start(); // start stream @@ -133,6 +131,20 @@ void QXmppIncomingClient::handleStream(const QDomElement &streamElement) d->domain.toAscii()); sendData(response.toUtf8()); + // check requested domain + if (streamElement.attribute("to") != d->domain) + { + QString response = QString("<stream:error>" + "<host-unknown xmlns=\"urn:ietf:params:xml:ns:xmpp-streams\"/>" + "<text xmlns=\"urn:ietf:params:xml:ns:xmpp-streams\">" + "This server does not serve %1" + "</text>" + "</stream:error>").arg(streamElement.attribute("to")); + sendData(response.toUtf8()); + disconnectFromHost(); + return; + } + // send stream features QXmppStreamFeatures features; if (!socket()->isEncrypted() && !socket()->localCertificate().isNull() && !socket()->privateKey().isNull()) |
