From 893dfd038a25279ce85d2507865708a9251baeb0 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Sat, 12 Feb 2011 20:23:22 -0500 Subject: [PATCH] Not sure if this could loop, but not going to risk it --- src/sip/twitter/twitter.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/sip/twitter/twitter.cpp b/src/sip/twitter/twitter.cpp index bf7036f2d..5fa16488d 100644 --- a/src/sip/twitter/twitter.cpp +++ b/src/sip/twitter/twitter.cpp @@ -159,6 +159,7 @@ TwitterPlugin::connectTimerFired() if ( !isValid() || m_cachedPeers.isEmpty() ) return; + bool peersChanged = false; QList peerlist = m_cachedPeers.keys(); qStableSort( peerlist.begin(), peerlist.end() ); foreach( QString screenName, peerlist ) @@ -171,10 +172,20 @@ TwitterPlugin::connectTimerFired() peerData["ohst"].toString() != Servent::instance()->externalAddress() || peerData["oprt"].toInt() != Servent::instance()->externalPort() ) - QMetaObject::invokeMethod( this, "sendOffer", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) ); + { + peerData["ohst"] = QVariant::fromValue< QString >( Servent::instance()->externalAddress() ); + peerData["oprt"] = QVariant::fromValue< int >( Servent::instance()->externalPort() ); + QMetaObject::invokeMethod( this, "sendOffer", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) ); + m_cachedPeers[screenName] = QVariant::fromValue< QHash< QString, QVariant > >( peerData ); + peersChanged = true; + + } else QMetaObject::invokeMethod( this, "makeConnection", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) ); } + + if ( peersChanged ) + TomahawkSettings::instance()->setTwitterCachedPeers( m_cachedPeers ); } void