Added support for HTTP redirection in downlaod threadOF

This commit is contained in:
Christophe Dumez
2010-01-29 18:42:20 +00:00
parent 31819e148f
commit fdccf9cc1c
3 changed files with 15 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
* Unreleased - Christophe Dumez <chris@qbittorrent.org> - v2.1.3 * Unreleased - Christophe Dumez <chris@qbittorrent.org> - v2.1.3
- BUGFIX: Fix "Append .!qB extension to complete files" (libtorrent v0.15) - BUGFIX: Fix "Append .!qB extension to complete files" (libtorrent v0.15)
- BUGFIX: Make sure bandwidth limiting dialogs are centered on screen - BUGFIX: Make sure bandwidth limiting dialogs are centered on screen
- BUGFIX: Added support for HTTP redirection
* Sun Jan 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.1.2 * Sun Jan 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.1.2
- FEATURE: Added back file prioritizing in a torrent - FEATURE: Added back file prioritizing in a torrent

View File

@@ -56,6 +56,18 @@ void downloadThread::processDlFinished(QNetworkReply* reply) {
// Failure // Failure
emit downloadFailure(url, errorCodeToString(reply->error())); emit downloadFailure(url, errorCodeToString(reply->error()));
} else { } else {
QVariant redirection = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if(redirection.isValid()) {
// We should redirect
qDebug("Redirecting from %s to %s", url.toLocal8Bit().data(), redirection.toUrl().toString().toLocal8Bit().data());
redirect_mapping.insert(redirection.toUrl().toString(), url);
downloadUrl(redirection.toUrl().toString());
return;
}
// Checking if it was redirecting, restoring initial URL
if(redirect_mapping.contains(url)) {
url = redirect_mapping.take(url);
}
// Success // Success
QString filePath; QString filePath;
QTemporaryFile tmpfile; QTemporaryFile tmpfile;

View File

@@ -33,6 +33,7 @@
#include <QNetworkReply> #include <QNetworkReply>
#include <QObject> #include <QObject>
#include <QHash>
class QNetworkAccessManager; class QNetworkAccessManager;
@@ -41,6 +42,7 @@ class downloadThread : public QObject {
private: private:
QNetworkAccessManager *networkManager; QNetworkAccessManager *networkManager;
QHash<QString, QString> redirect_mapping;
signals: signals:
void downloadFinished(QString url, QString file_path); void downloadFinished(QString url, QString file_path);