diff options
Diffstat (limited to 'src/libs/installer/downloadfiletask.cpp')
-rw-r--r-- | src/libs/installer/downloadfiletask.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/libs/installer/downloadfiletask.cpp b/src/libs/installer/downloadfiletask.cpp index 1b9f81ecc..a959677a9 100644 --- a/src/libs/installer/downloadfiletask.cpp +++ b/src/libs/installer/downloadfiletask.cpp @@ -1,7 +1,7 @@ /************************************************************************** ** -** Copyright (C) 2022 The Qt Company Ltd. +** Copyright (C) 2023 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -30,6 +30,7 @@ #include "downloadfiletask_p.h" #include "globals.h" +#include "productkeycheck.h" #include <QCoreApplication> #include <QDir> @@ -197,7 +198,7 @@ void Downloader::onReadyRead() data.observer->addSample(read); data.observer->addBytesTransfered(read); - data.observer->addCheckSumData(buffer.data(), read); + data.observer->addCheckSumData(buffer.left(read)); int progress = m_finished * 100; for (const auto &pair : m_downloads) @@ -246,7 +247,7 @@ void Downloader::onFinished(QNetworkReply *reply) if (!ba.isEmpty()) { data.observer->addSample(ba.size()); data.observer->addBytesTransfered(ba.size()); - data.observer->addCheckSumData(ba.data(), ba.size()); + data.observer->addCheckSumData(ba); } const QByteArray expectedCheckSum = data.taskItem.value(TaskRole::Checksum).toByteArray(); @@ -269,7 +270,7 @@ void Downloader::onFinished(QNetworkReply *reply) } } -void Downloader::onError(QNetworkReply::NetworkError error) +void Downloader::errorOccurred(QNetworkReply::NetworkError error) { QNetworkReply *const reply = qobject_cast<QNetworkReply *>(sender()); @@ -286,6 +287,10 @@ void Downloader::onError(QNetworkReply::NetworkError error) if (data.taskItem.source().contains(QLatin1String("Updates.xml"), Qt::CaseInsensitive)) { qCWarning(QInstaller::lcServer) << QString::fromLatin1("Network error while downloading '%1': %2.").arg( data.taskItem.source(), reply->errorString()); + } else if (data.taskItem.source().contains(QLatin1String("_meta"), Qt::CaseInsensitive)) { + QString errorString = tr("Network error while downloading '%1': %2.").arg(data.taskItem.source(), reply->errorString()); + errorString.append(ProductKeyCheck::instance()->additionalMetaDownloadWarning()); + m_futureInterface->reportException(TaskException(errorString)); } else { m_futureInterface->reportException( TaskException(tr("Network error while downloading '%1': %2.").arg( @@ -395,14 +400,17 @@ QNetworkReply *Downloader::startDownload(const FileTaskItem &item) .arg(source.toString(), source.errorString()))); return 0; } + QNetworkRequest request(source); + request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::ManualRedirectPolicy); + request.setAttribute(QNetworkRequest::Http2AllowedAttribute, false); - QNetworkReply *reply = m_nam.get(QNetworkRequest(source)); + QNetworkReply *reply = m_nam.get(request); std::unique_ptr<Data> data(new Data(item)); m_downloads[reply] = std::move(data); connect(reply, &QIODevice::readyRead, this, &Downloader::onReadyRead); - connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, - SLOT(onError(QNetworkReply::NetworkError))); + connect(reply, SIGNAL(errorOccurred(QNetworkReply::NetworkError)), this, + SLOT(errorOccurred(QNetworkReply::NetworkError))); #ifndef QT_NO_SSL connect(reply, &QNetworkReply::sslErrors, this, &Downloader::onSslErrors); #endif |