diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-28 09:39:46 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-28 09:39:46 +0000 |
| commit | 754ab1a32d250f7fd6110546d8baa5e19b68240d (patch) | |
| tree | d1d5e80c95ce4682db3a1186f67a4c3873ec3e70 /src/QXmppIncomingClient.cpp | |
| parent | 298b5e0c11154c7b1bbfbd6a301974aeb64f3b47 (diff) | |
| download | qxmpp-754ab1a32d250f7fd6110546d8baa5e19b68240d.tar.gz | |
make sure incoming clients ask for the right domain
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()) |
