From e30873adeb1337225113a5910d4b91a5d6af188c Mon Sep 17 00:00:00 2001 From: Samuel Ghinet Date: Tue, 13 Jun 2023 16:01:22 +0300 Subject: [PATCH] QmlDesigner: Use http as fallback if SSL is not supported Task-number: QDS-10011 Change-Id: Id3f2e406414a4e103471b9351db3fea3f686c83d Reviewed-by: Tim Jenssen --- .../qmldesigner/utils/filedownloader.cpp | 25 ++++++++++++++----- .../qmldesigner/utils/filedownloader.h | 1 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/plugins/qmldesigner/utils/filedownloader.cpp b/src/plugins/qmldesigner/utils/filedownloader.cpp index dc8cf85c204..8b3bb63993e 100644 --- a/src/plugins/qmldesigner/utils/filedownloader.cpp +++ b/src/plugins/qmldesigner/utils/filedownloader.cpp @@ -9,6 +9,7 @@ #include #include #include +#include namespace QmlDesigner { @@ -38,6 +39,22 @@ bool FileDownloader::deleteFileAtTheEnd() const return m_targetFilePath.isEmpty(); } +QNetworkRequest FileDownloader::makeRequest() const +{ + QUrl url = m_url; + + if (url.scheme() == "https" && !QSslSocket::supportsSsl()) { + qWarning() << "SSL is not available. HTTP will be used instead of HTTPS."; + url.setScheme("http"); + } + + auto request = QNetworkRequest(url); + request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, + QNetworkRequest::UserVerifiedRedirectPolicy); + + return request; +} + void FileDownloader::start() { emit downloadStarting(); @@ -48,9 +65,7 @@ void FileDownloader::start() m_outputFile.setFileName(tempFileName); m_outputFile.open(QIODevice::WriteOnly); - auto request = QNetworkRequest(m_url); - request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, - QNetworkRequest::UserVerifiedRedirectPolicy); + QNetworkRequest request = makeRequest(); QNetworkReply *reply = Utils::NetworkAccessManager::instance()->get(request); m_reply = reply; @@ -255,9 +270,7 @@ void FileDownloader::doProbeUrl() return; } - auto request = QNetworkRequest(m_url); - request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, - QNetworkRequest::UserVerifiedRedirectPolicy); + QNetworkRequest request = makeRequest(); QNetworkReply *reply = Utils::NetworkAccessManager::instance()->head(request); QNetworkReply::connect(reply, &QNetworkReply::redirected, [reply](const QUrl &) { diff --git a/src/plugins/qmldesigner/utils/filedownloader.h b/src/plugins/qmldesigner/utils/filedownloader.h index 9bdd70943fa..6027338af02 100644 --- a/src/plugins/qmldesigner/utils/filedownloader.h +++ b/src/plugins/qmldesigner/utils/filedownloader.h @@ -78,6 +78,7 @@ signals: private: void doProbeUrl(); bool deleteFileAtTheEnd() const; + QNetworkRequest makeRequest() const; QUrl m_url; bool m_probeUrl = false;