aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppOutgoingServer.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-29 15:47:37 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-29 15:47:37 +0000
commit317ab669fae2801c2ff8cb771690c408ab6112af (patch)
tree4c075a637a2e60067ad8355fa42b13627bedfab2 /src/QXmppOutgoingServer.cpp
parentc4ccfbf5795d7cdc37fb32ebdd145ae0e68b5b77 (diff)
downloadqxmpp-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.cpp27
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"