From 328cd7eb6d5b6d6dfafc23fde386d9c89d6f6d96 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 28 Feb 2011 02:01:52 +0100 Subject: [PATCH 1/3] * Fixed SIP jabber behaviour. --- src/sip/jabber/jabber_p.cpp | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/sip/jabber/jabber_p.cpp b/src/sip/jabber/jabber_p.cpp index 0f7eb11fb..9b8a3c6c9 100644 --- a/src/sip/jabber/jabber_p.cpp +++ b/src/sip/jabber/jabber_p.cpp @@ -41,18 +41,6 @@ Jabber_p::Jabber_p( const QString& jid, const QString& password, const QString& qDebug() << "Our JID set to:" << m_jid.full().c_str(); - // the google hack, because they filter disco features they don't know. - if( m_jid.server().find( "googlemail." ) != string::npos - || m_jid.server().find( "gmail." ) != string::npos - || m_jid.server().find( "gtalk." ) != string::npos ) - { - if( m_jid.resource().find( "tomahawk" ) == string::npos ) - { - qDebug() << "Forcing your /resource to contain 'tomahawk' (the google workaround)"; - m_jid.setResource( "tomahawk-tomahawk" ); - } - } - m_client = QSharedPointer( new gloox::Client( m_jid, password.toStdString(), port ) ); m_server = server; } @@ -525,11 +513,10 @@ Jabber_p::handlePresence( const gloox::Presence& presence ) // ignore anyone not running tomahawk: // convert to QString to get proper regex support - const gloox::Capabilities *caps = presence.findExtension(gloox::ExtCaps); + const gloox::Capabilities *caps = presence.findExtension( gloox::ExtCaps ); QString node = QString::fromAscii( caps->node().c_str() ); - if( QString::fromAscii( jid.resource().c_str() ).startsWith(QLatin1String("tomahawk")) - || node == TOMAHAWK_CAP_NODE_NAME - ) + if( !QString::fromAscii( jid.resource().c_str() ).startsWith( QLatin1String( "tomahawk" ) ) + && !( node == TOMAHAWK_CAP_NODE_NAME ) ) { //qDebug() << "not considering resource of" << res; // Disco them to check if they are tomahawk-capable From 8096d5c7e872ccebf6e5d90af4d9e7e8c70c1141 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 28 Feb 2011 02:07:14 +0100 Subject: [PATCH 2/3] * Fixed trying to call connect() on a null-pointer. --- src/libtomahawk/network/controlconnection.cpp | 11 +++++++---- src/sip/jabber/jabber_p.cpp | 14 ++++---------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/libtomahawk/network/controlconnection.cpp b/src/libtomahawk/network/controlconnection.cpp index 67e807f67..bb5d46489 100644 --- a/src/libtomahawk/network/controlconnection.cpp +++ b/src/libtomahawk/network/controlconnection.cpp @@ -131,11 +131,14 @@ ControlConnection::setupDbSyncConnection( bool ondemand ) sendMsg( m ); } - connect( m_dbsyncconn, SIGNAL( finished() ), - m_dbsyncconn, SLOT( deleteLater() ) ); + if ( m_dbsyncconn ) + { + connect( m_dbsyncconn, SIGNAL( finished() ), + m_dbsyncconn, SLOT( deleteLater() ) ); - connect( m_dbsyncconn, SIGNAL( destroyed( QObject* ) ), - SLOT( dbSyncConnFinished( QObject* ) ), Qt::DirectConnection ); + connect( m_dbsyncconn, SIGNAL( destroyed( QObject* ) ), + SLOT( dbSyncConnFinished( QObject* ) ), Qt::DirectConnection ); + } } diff --git a/src/sip/jabber/jabber_p.cpp b/src/sip/jabber/jabber_p.cpp index 9b8a3c6c9..8873e7e66 100644 --- a/src/sip/jabber/jabber_p.cpp +++ b/src/sip/jabber/jabber_p.cpp @@ -501,9 +501,7 @@ Jabber_p::handleRosterError( const IQ& /*iq*/ ) void Jabber_p::handlePresence( const gloox::Presence& presence ) { - //JID jid( item.jid() ); JID jid = presence.from(); - //jid.setResource( resource ); QString fulljid( jid.full().c_str() ); qDebug() << "* handleRosterPresence" << fulljid << presence.subtype(); @@ -535,9 +533,7 @@ Jabber_p::handlePresence( const gloox::Presence& presence ) // "going offline" event if ( !presenceMeansOnline( presence.subtype() ) && ( !m_peers.contains( fulljid ) || - presenceMeansOnline( m_peers.value( fulljid ) ) - ) - ) + presenceMeansOnline( m_peers.value( fulljid ) ) ) ) { m_peers[ fulljid ] = presence.subtype(); qDebug() << "* Peer goes offline:" << fulljid; @@ -546,11 +542,9 @@ Jabber_p::handlePresence( const gloox::Presence& presence ) } // "coming online" event - if( presenceMeansOnline( presence.subtype() ) && - ( !m_peers.contains( fulljid ) || - !presenceMeansOnline( m_peers.value( fulljid ) ) - ) - ) + if ( presenceMeansOnline( presence.subtype() ) && + ( !m_peers.contains( fulljid ) || + !presenceMeansOnline( m_peers.value( fulljid ) ) ) ) { m_peers[ fulljid ] = presence.subtype(); qDebug() << "* Peer goes online:" << fulljid; From e1cfcce4891283b60df68e0445e2b8455ff1a5b3 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 28 Feb 2011 02:11:16 +0100 Subject: [PATCH 3/3] Register presence handler in libsip_jabber --- src/sip/jabber/jabber_p.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/sip/jabber/jabber_p.cpp b/src/sip/jabber/jabber_p.cpp index 8873e7e66..7411a0550 100644 --- a/src/sip/jabber/jabber_p.cpp +++ b/src/sip/jabber/jabber_p.cpp @@ -122,6 +122,8 @@ Jabber_p::go() qDebug() << "No server found!"; return; } + + m_client->registerPresenceHandler( this ); m_client->registerConnectionListener( this ); m_client->logInstance().registerLogHandler( LogLevelWarning, LogAreaAll, this ); m_client->registerMessageHandler( this ); @@ -511,8 +513,11 @@ Jabber_p::handlePresence( const gloox::Presence& presence ) // ignore anyone not running tomahawk: // convert to QString to get proper regex support + QString node; const gloox::Capabilities *caps = presence.findExtension( gloox::ExtCaps ); - QString node = QString::fromAscii( caps->node().c_str() ); + if( caps ) + QString node = QString::fromAscii( caps->node().c_str() ); + if( !QString::fromAscii( jid.resource().c_str() ).startsWith( QLatin1String( "tomahawk" ) ) && !( node == TOMAHAWK_CAP_NODE_NAME ) ) {