From dc42da2e630955262e7b1b0318c0528834a53969 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Wed, 20 Oct 2010 13:55:08 +0000 Subject: use asynchronous DNS SRV lookups to avoid freezing clients during lookup --- src/QXmppOutgoingServer.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/QXmppOutgoingServer.cpp') diff --git a/src/QXmppOutgoingServer.cpp b/src/QXmppOutgoingServer.cpp index a7c92a56..93fcc703 100644 --- a/src/QXmppOutgoingServer.cpp +++ b/src/QXmppOutgoingServer.cpp @@ -77,12 +77,18 @@ QXmppOutgoingServer::~QXmppOutgoingServer() void QXmppOutgoingServer::connectToHost(const QString &domain) { d->remoteDomain = domain; - QString host; - quint16 port; // lookup server for domain debug(QString("Looking up server for domain %1").arg(domain)); - QXmppSrvInfo serviceInfo = QXmppSrvInfo::fromName("_xmpp-server._tcp." + domain); + QXmppSrvInfo::lookupService("_xmpp-server._tcp." + domain, this, + SLOT(connectHost(serviceInfo))); +} + +void QXmppOutgoingServer::connectToHost(const QXmppSrvInfo &serviceInfo) +{ + QString host; + quint16 port; + if (!serviceInfo.records().isEmpty()) { // take the first returned record @@ -90,8 +96,8 @@ void QXmppOutgoingServer::connectToHost(const QString &domain) port = serviceInfo.records().first().port(); } else { // as a fallback, use domain as the host name - warning(QString("Lookup for domain %1 failed: %2").arg(domain, serviceInfo.errorString())); - host = domain; + warning(QString("Lookup for domain %1 failed: %2").arg(d->remoteDomain, serviceInfo.errorString())); + host = d->remoteDomain; port = 5269; } -- cgit v1.2.3