diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-01-19 09:43:30 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-01-19 09:43:30 +0000 |
| commit | feff43672b073068fec43e13a980bcc498e1851a (patch) | |
| tree | 6ee241741e02b920bf71ea51c0421c732e6adae8 /src/QXmppIncomingServer.cpp | |
| parent | 4ab4c9ec4152106dbd02c1b9e7899da9254f5569 (diff) | |
| download | qxmpp-feff43672b073068fec43e13a980bcc498e1851a.tar.gz | |
allow incoming s2s streams to authenticate for multiple domains (e.g. google.com hosted domains)
Diffstat (limited to 'src/QXmppIncomingServer.cpp')
| -rw-r--r-- | src/QXmppIncomingServer.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/QXmppIncomingServer.cpp b/src/QXmppIncomingServer.cpp index 1f11d119..ef126c1e 100644 --- a/src/QXmppIncomingServer.cpp +++ b/src/QXmppIncomingServer.cpp @@ -35,7 +35,7 @@ class QXmppIncomingServerPrivate { public: - QString authenticated; + QSet<QString> authenticated; QString domain; QString localStreamId; }; @@ -146,13 +146,13 @@ void QXmppIncomingServer::handleStanza(const QDomElement &stanza) } } - else if (!d->authenticated.isEmpty() && - jidToDomain(stanza.attribute("from")) == d->authenticated) + else if (d->authenticated.contains(jidToDomain(stanza.attribute("from")))) { // relay stanza if the remote party is authenticated emit elementReceived(stanza); } else { - warning("Received an element, but remote party is not authenticated"); + warning(QString("Received an element from unverified domain %1").arg(jidToDomain(stanza.attribute("from")))); + disconnectFromHost(); } } @@ -190,10 +190,13 @@ void QXmppIncomingServer::slotDialbackResponseReceived(const QXmppDialback &dial // check for success if (response.type() == "valid") { - info("Incoming stream is ready"); - d->authenticated = dialback.from(); - emit connected(); + info(QString("Verified incoming domain %1").arg(dialback.from())); + const bool wasConnected = !d->authenticated.isEmpty(); + d->authenticated.insert(dialback.from()); + if (!wasConnected) + emit connected(); } else { + warning(QString("Failed to verify incoming domain %1").arg(dialback.from())); disconnectFromHost(); } |
