aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppOutgoingServer.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-10-20 13:55:08 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-10-20 13:55:08 +0000
commitdc42da2e630955262e7b1b0318c0528834a53969 (patch)
tree9fd1d1b1c85068dbe81f50ad34decab58edfa529 /src/QXmppOutgoingServer.cpp
parentf8c729d64378b062f721fe5fbf903f2d41a4f971 (diff)
downloadqxmpp-dc42da2e630955262e7b1b0318c0528834a53969.tar.gz
use asynchronous DNS SRV lookups to avoid freezing clients during lookup
Diffstat (limited to 'src/QXmppOutgoingServer.cpp')
-rw-r--r--src/QXmppOutgoingServer.cpp16
1 files changed, 11 insertions, 5 deletions
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;
}