mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 14:16:32 +02:00
Make things a little safer and also try setting an explicit nam configuration on liblastfm2 in settings dialog to see if that fixes the Mac problem
This commit is contained in:
@@ -98,7 +98,6 @@ LastFmPlugin::namChangedSlot( QNetworkAccessManager *nam )
|
|||||||
if ( !nam )
|
if ( !nam )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QNetworkAccessManager* currNam = lastfm::nam();
|
|
||||||
TomahawkUtils::NetworkProxyFactory* oldProxyFactory = dynamic_cast< TomahawkUtils::NetworkProxyFactory* >( nam->proxyFactory() );
|
TomahawkUtils::NetworkProxyFactory* oldProxyFactory = dynamic_cast< TomahawkUtils::NetworkProxyFactory* >( nam->proxyFactory() );
|
||||||
|
|
||||||
if ( !oldProxyFactory )
|
if ( !oldProxyFactory )
|
||||||
@@ -107,6 +106,10 @@ LastFmPlugin::namChangedSlot( QNetworkAccessManager *nam )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//WARNING: there's a chance liblastfm2 will clobber the application proxy factory it if it constructs a nam due to the below call
|
||||||
|
//but it is unsafe to re-set it here
|
||||||
|
QNetworkAccessManager* currNam = lastfm::nam();
|
||||||
|
|
||||||
currNam->setConfiguration( nam->configuration() );
|
currNam->setConfiguration( nam->configuration() );
|
||||||
currNam->setNetworkAccessible( nam->networkAccessible() );
|
currNam->setNetworkAccessible( nam->networkAccessible() );
|
||||||
TomahawkUtils::NetworkProxyFactory* newProxyFactory = new TomahawkUtils::NetworkProxyFactory();
|
TomahawkUtils::NetworkProxyFactory* newProxyFactory = new TomahawkUtils::NetworkProxyFactory();
|
||||||
@@ -114,8 +117,6 @@ LastFmPlugin::namChangedSlot( QNetworkAccessManager *nam )
|
|||||||
QNetworkProxy newProxy( oldProxyFactory->proxy() );
|
QNetworkProxy newProxy( oldProxyFactory->proxy() );
|
||||||
newProxyFactory->setProxy( newProxy );
|
newProxyFactory->setProxy( newProxy );
|
||||||
currNam->setProxyFactory( newProxyFactory );
|
currNam->setProxyFactory( newProxyFactory );
|
||||||
//FIXME: on Mac/Win as liblastfm's network access manager also sets its overriding application proxy
|
|
||||||
//may have to do a QNetworkProxy::setApplicationProxy and clobber our own factory to override it
|
|
||||||
settingsChanged(); // to get the scrobbler set up
|
settingsChanged(); // to get the scrobbler set up
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -425,8 +425,6 @@ NetworkProxyFactory::setProxy( const QNetworkProxy& proxy )
|
|||||||
NetworkProxyFactory*
|
NetworkProxyFactory*
|
||||||
proxyFactory()
|
proxyFactory()
|
||||||
{
|
{
|
||||||
// Don't use this anywhere! It's provided here for access reasons, but QNAM deletes this at will!
|
|
||||||
|
|
||||||
if ( !s_proxyFactory )
|
if ( !s_proxyFactory )
|
||||||
s_proxyFactory = new NetworkProxyFactory();
|
s_proxyFactory = new NetworkProxyFactory();
|
||||||
|
|
||||||
@@ -440,6 +438,15 @@ setProxyFactory( NetworkProxyFactory* factory )
|
|||||||
Q_ASSERT( factory );
|
Q_ASSERT( factory );
|
||||||
s_proxyFactory = factory;
|
s_proxyFactory = factory;
|
||||||
NetworkProxyFactory::setApplicationProxyFactory( s_proxyFactory );
|
NetworkProxyFactory::setApplicationProxyFactory( s_proxyFactory );
|
||||||
|
//nam takes ownership so set a copy, not the global one
|
||||||
|
if ( s_nam )
|
||||||
|
{
|
||||||
|
TomahawkUtils::NetworkProxyFactory* newProxyFactory = new TomahawkUtils::NetworkProxyFactory();
|
||||||
|
newProxyFactory->setNoProxyHosts( factory->noProxyHosts() );
|
||||||
|
QNetworkProxy newProxy( factory->proxy() );
|
||||||
|
newProxyFactory->setProxy( newProxy );
|
||||||
|
s_nam.data()->setProxyFactory( newProxyFactory );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
#include <QNetworkConfiguration>
|
||||||
#include <QNetworkProxy>
|
#include <QNetworkProxy>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QSizeGrip>
|
#include <QSizeGrip>
|
||||||
@@ -404,6 +405,22 @@ SettingsDialog::testLastFmLogin()
|
|||||||
query[ "method" ] = "auth.getMobileSession";
|
query[ "method" ] = "auth.getMobileSession";
|
||||||
query[ "username" ] = ui->lineEditLastfmUsername->text().toLower();
|
query[ "username" ] = ui->lineEditLastfmUsername->text().toLower();
|
||||||
query[ "authToken" ] = authToken;
|
query[ "authToken" ] = authToken;
|
||||||
|
|
||||||
|
TomahawkUtils::NetworkProxyFactory* oldProxyFactory = TomahawkUtils::proxyFactory();
|
||||||
|
QNetworkAccessManager* nam = TomahawkUtils::nam();
|
||||||
|
|
||||||
|
//WARNING: there's a chance liblastfm2 will clobber the application proxy factory it if it constructs a nam due to the below call
|
||||||
|
//but it is unsafe to re-set it here
|
||||||
|
QNetworkAccessManager* currNam = lastfm::nam();
|
||||||
|
|
||||||
|
currNam->setConfiguration( nam->configuration() );
|
||||||
|
currNam->setNetworkAccessible( nam->networkAccessible() );
|
||||||
|
TomahawkUtils::NetworkProxyFactory* newProxyFactory = new TomahawkUtils::NetworkProxyFactory();
|
||||||
|
newProxyFactory->setNoProxyHosts( oldProxyFactory->noProxyHosts() );
|
||||||
|
QNetworkProxy newProxy( oldProxyFactory->proxy() );
|
||||||
|
newProxyFactory->setProxy( newProxy );
|
||||||
|
currNam->setProxyFactory( newProxyFactory );
|
||||||
|
|
||||||
QNetworkReply* authJob = lastfm::ws::post( query );
|
QNetworkReply* authJob = lastfm::ws::post( query );
|
||||||
|
|
||||||
connect( authJob, SIGNAL( finished() ), SLOT( onLastFmFinished() ) );
|
connect( authJob, SIGNAL( finished() ), SLOT( onLastFmFinished() ) );
|
||||||
|
Reference in New Issue
Block a user