aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppIncomingClient.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-28 09:39:46 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-28 09:39:46 +0000
commit754ab1a32d250f7fd6110546d8baa5e19b68240d (patch)
treed1d5e80c95ce4682db3a1186f67a4c3873ec3e70 /src/QXmppIncomingClient.cpp
parent298b5e0c11154c7b1bbfbd6a301974aeb64f3b47 (diff)
downloadqxmpp-754ab1a32d250f7fd6110546d8baa5e19b68240d.tar.gz
make sure incoming clients ask for the right domain
Diffstat (limited to 'src/QXmppIncomingClient.cpp')
-rw-r--r--src/QXmppIncomingClient.cpp18
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())