If HTTP requests are redirected, copy over original headers.

Issue #1042
This commit is contained in:
Craig Drummond
2017-07-13 23:15:12 +01:00
parent 1c354da8d5
commit 2c57f093ff
2 changed files with 10 additions and 1 deletions

View File

@@ -84,6 +84,7 @@
66. Enable retina support for all builds.
67. Store replaygain settings in Cantata's config file, as it appears MPD does
not persist changes.
68. If HTTP requests are redirected, copy over original headers.
2.0.1
-----

View File

@@ -128,8 +128,16 @@ void NetworkJob::jobFinished()
QVariant redirect = j->header(QNetworkRequest::LocationHeader);
if (redirect.isValid() && ++numRedirects<constMaxRedirects) {
QNetworkReply *newJob=static_cast<QNetworkAccessManager *>(j->manager())->get(QNetworkRequest(redirect.toUrl()));
QNetworkRequest newReq(redirect.toUrl());
QNetworkRequest origReq(job->request());
// Copy headers...
const QList<QByteArray> &headers=origReq.rawHeaderList();;
foreach (const QByteArray &header, headers) {
newReq.setRawHeader(header, origReq.rawHeader(header));
}
QNetworkReply *newJob=static_cast<QNetworkAccessManager *>(j->manager())->get(newReq);
DBUG << j->url().toString() << "redirected to" << newJob->url().toString();
cancelJob();
job=newJob;
connectJob();