| Summary: | "Download Media" of podcast does not seem to apply proxy settings. | ||
|---|---|---|---|
| Product: | [Applications] amarok | Reporter: | rumagent <rumagent> |
| Component: | Podcast | Assignee: | Amarok Bugs <amarok-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Gentoo Packages | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
It is amarok 1.4.3 by the way That's right, it'll ignore proxies. This bug seems to still exists in version 1.4.4. This is similar to bug:131137. PodcastFetcher is using qhttp which doesn't seem to have a proxy option built in. It looks like ktrm.cpp uses KProtocolManager::reparseConfiguration() to pick out the proxies from kcontrol, but you probably want to use KIO to pull down the podcasts. We used KIO, it was changed to qhttp for some reason I can't remember. I gotta check the logs. SVN commit 601084 by aoliveira:
When downloading podcasts, proxy settings would be ignored.
BUG: 134028
M +18 -4 playlistbrowseritem.cpp
--- trunk/extragear/multimedia/amarok/src/playlistbrowseritem.cpp #601083:601084
@@ -2331,13 +2331,21 @@
PodcastFetcher::PodcastFetcher( QString url, const KURL &directory, int size ):
m_url( QUrl( url )),
- m_http( new QHttp( m_url.host() ) ),
m_directory ( directory ),
m_error( 0 ),
m_size( size )
{
m_redirected = false;
+
+ QString proxy = Amarok::proxyForUrl( m_url );
+ if ( proxy.isNull() )
+ m_http = new QHttp( m_url.host() );
+ else {
+ QUrl proxyUrl( proxy );
+ m_http = new QHttp( proxyUrl.host(), proxyUrl.port() );
+ }
+
connect( (m_http), SIGNAL( responseHeaderReceived ( const QHttpResponseHeader & ) ), this,
SLOT( slotResponseReceived( const QHttpResponseHeader & ) ) );
connect( (m_http), SIGNAL( done( bool ) ), this, SLOT( slotDone( bool ) ) );
@@ -2379,8 +2387,14 @@
}
m_file.setName( file.filePath() );
}
- m_http->get( m_url.encodedPathAndQuery(), (&m_file) );
- // debug() << m_http->currentId() << " get( http://"<< m_url.host() << m_url.encodedPathAndQuery() << " )" << endl;
+
+ // Qhttp::get() "conviniently" "corrects" the path in a way that wouldn't let it work
+ // work with proxies. So let's create the request manually.
+ QHttpRequestHeader request( "GET", m_url );
+ request.setValue( "Host", m_url.host() + ":" + m_url.port() );
+ request.setValue( "Connection", "Keep-Alive" );
+ m_http->request( request, 0, (&m_file) );
+
if( m_http->error() )
debug() << m_http->errorString() << endl;
}
@@ -2408,7 +2422,7 @@
void PodcastFetcher::slotResponseReceived( const QHttpResponseHeader & resp )
{
-// debug() << m_http->currentId() << " RESPONCE, statuscode = " << resp.statusCode() << endl;
+// debug() << m_http->currentId() << " RESPONCE, statuscode = " << resp.statusCode() << endl;
if( resp.statusCode() == 302 || resp.statusCode() == 301 )
{
if (resp.hasKey( "location" ) )
|
Version: (using KDE KDE 3.5.4) Installed from: Gentoo Packages Compiler: GCC 4.1.1 OS: Linux I sit behind a firewall and must use a proxy. When I try to download ("Download Media" ) a podcast nothing happens (basically times out). If I try to stream/play the sane podcast it works without problems. My guess is that the proxy settings are not being applied. I compiled amarok with debug and got the following when attempting to download a podcast: amarok: BEGIN: void PodcastEpisode::downloadMedia() amarok: [void PodcastEpisode::downloadMedia()] thread: None amarok: [KDE::ProgressBar::ProgressBar(QWidget*, QLabel*)] amarok: connecting 2progress( const QObject*, int ) LOOKATME amarok: END__: void PodcastEpisode::downloadMedia() - Took 0.0029s amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.0012s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.0014s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.00023s amarok: END__: virtual bool ScanController::doJob() - Took 0.0003s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 4.7e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.0014s amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.002s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.0021s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.00026s amarok: END__: virtual bool ScanController::doJob() - Took 0.00033s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 4.9e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.0014s amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.0019s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.002s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.00034s amarok: END__: virtual bool ScanController::doJob() - Took 0.00056s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 5e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.0021s amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.0019s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.002s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.00033s amarok: END__: virtual bool ScanController::doJob() - Took 0.00056s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 4.7e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.002s amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.0013s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.0014s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.00026s amarok: END__: virtual bool ScanController::doJob() - Took 0.00033s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 5.1e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.0016s amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.0013s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.0014s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.0003s amarok: END__: virtual bool ScanController::doJob() - Took 0.00038s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 5.9e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.017s amarok: Unable to retrieve podcast media. KIO Error: 3 amarok: [virtual KDE::ProgressBar::~ProgressBar()] amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.0012s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.0014s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.00026s amarok: END__: virtual bool ScanController::doJob() - Took 0.00033s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 5.1e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.0017s amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.0012s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.0013s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.00025s amarok: END__: virtual bool ScanController::doJob() - Took 0.00032s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 4.8e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.0015s amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.0019s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.002s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.00033s amarok: END__: virtual bool ScanController::doJob() - Took 0.00056s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 4.8e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.002s amarok: BEGIN: ScanController::ScanController(CollectionDB*, bool, const QStringList&) amarok: BEGIN: void ScanController::initIncremental() amarok: END__: void ScanController::initIncremental() - Took 0.0019s amarok: END__: ScanController::ScanController(CollectionDB*, bool, const QStringList&) - Took 0.0021s amarok: BEGIN: virtual void ThreadWeaver::Thread::run() amarok: BEGIN: virtual bool ScanController::doJob() amarok: BEGIN: SqliteConnection::SqliteConnection(const SqliteConfig*) amarok: END__: SqliteConnection::SqliteConnection(const SqliteConfig*) - Took 0.00037s amarok: END__: virtual bool ScanController::doJob() - Took 0.0006s amarok: [CollectionDB] JobFinishedEvent from Incremental ScanController received. amarok: [ThreadWeaver] Job completed: CollectionScanner. Jobs pending: 0 amarok: BEGIN: virtual ScanController::~ScanController() amarok: END__: virtual ScanController::~ScanController() - Took 5e-05s amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.0021s amarok: [ThreadWeaver] Threads in pool: 2 Hope someone can help. Please feel free to contact me if there is any information lacking. /Rune