diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-29 15:47:37 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-29 15:47:37 +0000 |
| commit | 317ab669fae2801c2ff8cb771690c408ab6112af (patch) | |
| tree | 4c075a637a2e60067ad8355fa42b13627bedfab2 /src/QXmppOutgoingServer.cpp | |
| parent | c4ccfbf5795d7cdc37fb32ebdd145ae0e68b5b77 (diff) | |
| download | qxmpp-317ab669fae2801c2ff8cb771690c408ab6112af.tar.gz | |
if no explicit host/port are given, use DNS SRV lookup
Diffstat (limited to 'src/QXmppOutgoingServer.cpp')
| -rw-r--r-- | src/QXmppOutgoingServer.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/QXmppOutgoingServer.cpp b/src/QXmppOutgoingServer.cpp index c3790cd0..d88299d2 100644 --- a/src/QXmppOutgoingServer.cpp +++ b/src/QXmppOutgoingServer.cpp @@ -28,6 +28,7 @@ #include "QXmppConstants.h" #include "QXmppDialback.h" #include "QXmppOutgoingServer.h" +#include "QXmppServiceInfo.h" #include "QXmppStreamFeatures.h" #include "QXmppUtils.h" @@ -65,6 +66,32 @@ QXmppOutgoingServer::~QXmppOutgoingServer() delete d; } +void QXmppOutgoingServer::connectToHost() +{ + const QString domain = configuration().domain(); + QString host; + quint16 port; + + // lookup server for domain + debug(QString("Looking up server for domain %1").arg(domain)); + QXmppServiceInfo serviceInfo = QXmppServiceInfo::fromName("_xmpp-server._tcp." + domain); + if (!serviceInfo.records().isEmpty()) + { + // take the first returned record + host = serviceInfo.records().first().hostName(); + 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; + port = 5269; + } + + // connect to server + info(QString("Connecting to %1:%2").arg(host, QString::number(port))); + socket()->connectToHost(host, port); +} + void QXmppOutgoingServer::handleStart() { QString data = QString("<?xml version='1.0'?><stream:stream" |
