diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-01-31 09:18:46 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-01-31 09:18:46 +0000 |
| commit | 29ddffd8818c2f566e24418ff91ea94d2a2c8e9d (patch) | |
| tree | 82f202aef622c619fb32bb9a1abbd1c3ecfa213e /src/QXmppOutgoingServer.cpp | |
| parent | 9ed7f845dd5f5cbf95135de24c465b08b709ca9f (diff) | |
| download | qxmpp-29ddffd8818c2f566e24418ff91ea94d2a2c8e9d.tar.gz | |
switch from QXmppSrvInfo to QDnsLookup
Diffstat (limited to 'src/QXmppOutgoingServer.cpp')
| -rw-r--r-- | src/QXmppOutgoingServer.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/QXmppOutgoingServer.cpp b/src/QXmppOutgoingServer.cpp index 0845c6d4..e980c27e 100644 --- a/src/QXmppOutgoingServer.cpp +++ b/src/QXmppOutgoingServer.cpp @@ -25,11 +25,11 @@ #include <QSslKey> #include <QSslSocket> #include <QTimer> +#include "qdnslookup.h" #include "QXmppConstants.h" #include "QXmppDialback.h" #include "QXmppOutgoingServer.h" -#include "QXmppSrvInfo.h" #include "QXmppStreamFeatures.h" #include "QXmppUtils.h" @@ -37,6 +37,7 @@ class QXmppOutgoingServerPrivate { public: QList<QByteArray> dataQueue; + QDnsLookup dns; QString localDomain; QString localStreamKey; QString remoteDomain; @@ -59,6 +60,7 @@ QXmppOutgoingServer::QXmppOutgoingServer(const QString &domain, QObject *parent) bool check; Q_UNUSED(check); + // socket initialisation QSslSocket *socket = new QSslSocket(this); setSocket(socket); @@ -66,6 +68,11 @@ QXmppOutgoingServer::QXmppOutgoingServer(const QString &domain, QObject *parent) this, SLOT(socketError(QAbstractSocket::SocketError))); Q_ASSERT(check); + // DNS lookups + check = connect(&d->dns, SIGNAL(finished()), + this, SLOT(_q_dnsLookupFinished())); + Q_ASSERT(check); + d->dialbackTimer = new QTimer(this); d->dialbackTimer->setInterval(5000); d->dialbackTimer->setSingleShot(true); @@ -99,23 +106,25 @@ void QXmppOutgoingServer::connectToHost(const QString &domain) // lookup server for domain debug(QString("Looking up server for domain %1").arg(domain)); - QXmppSrvInfo::lookupService("_xmpp-server._tcp." + domain, this, - SLOT(connectToHost(QXmppSrvInfo))); + d->dns.setName("_xmpp-server._tcp." + domain); + d->dns.setType(QDnsLookup::SRV); + d->dns.lookup(); } -void QXmppOutgoingServer::connectToHost(const QXmppSrvInfo &serviceInfo) +void QXmppOutgoingServer::_q_dnsLookupFinished() { QString host; quint16 port; - if (!serviceInfo.records().isEmpty()) - { + if (d->dns.error() == QDnsLookup::NoError && + !d->dns.serviceRecords().isEmpty()) { // take the first returned record - host = serviceInfo.records().first().target(); - port = serviceInfo.records().first().port(); + host = d->dns.serviceRecords().first().target(); + port = d->dns.serviceRecords().first().port(); } else { // as a fallback, use domain as the host name - warning(QString("Lookup for domain %1 failed: %2").arg(d->remoteDomain, serviceInfo.errorString())); + warning(QString("Lookup for domain %1 failed: %2") + .arg(d->dns.name(), d->dns.errorString())); host = d->remoteDomain; port = 5269; } |
