diff options
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" |
