diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-10-20 13:55:08 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-10-20 13:55:08 +0000 |
| commit | dc42da2e630955262e7b1b0318c0528834a53969 (patch) | |
| tree | 9fd1d1b1c85068dbe81f50ad34decab58edfa529 /src/QXmppOutgoingServer.cpp | |
| parent | f8c729d64378b062f721fe5fbf903f2d41a4f971 (diff) | |
| download | qxmpp-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.cpp | 16 |
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; } |
