Kopete - jabber: Process all SRV records or fallback if SRV records not exist

This resolves bug 2723

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
(cherry picked from commit 244c1e03a0)
pull/38/head
Slávek Banko 8 years ago
parent 56484e2a73
commit 8fb0b52d50

@ -47,12 +47,10 @@ void JabberConnector::connectToServer ( const TQString &server )
{
kdDebug ( JABBER_DEBUG_GLOBAL ) << k_funcinfo << "Initiating connection to " << server << endl;
mServer = server;
mErrorCode = KNetwork::TDESocketBase::NoError;
if( mHost.isEmpty() ) {
if( mSrvResolver->isBusy() ) {
mSrvResolver->stop();
}
mSrvResolver->resolve(server, "xmpp-client", "tcp");
return;
}
@ -90,14 +88,21 @@ void JabberConnector::slotError ( int code )
void JabberConnector::slotSrvLookup()
{
if( mSrvResolver->failed() ) {
mErrorCode = KNetwork::TDESocketBase::LookupFailure;
emit error ();
if( mErrorCode == KNetwork::TDESocketBase::NoError ) {
// SRV records probably not exist - try server and default port as fallback
if ( !mByteStream->connect ( mServer, TQString::number ( 5222 ) )) {
mErrorCode = mByteStream->socket()->error ();
}
}
if( mErrorCode != KNetwork::TDESocketBase::NoError ) {
emit error ();
}
return;
}
if( !mByteStream->connect( mSrvResolver->resultAddress().toString(), TQString::number( mSrvResolver->resultPort() ))) {
mErrorCode = mByteStream->socket()->error ();
emit error ();
mSrvResolver->next();
}
}

@ -57,6 +57,7 @@ private slots:
void slotSrvLookup ();
private:
TQString mServer;
TQString mHost;
TQ_UINT16 mPort;
int mErrorCode;

Loading…
Cancel
Save