QmlDesigner: Use http as fallback if SSL is not supported

Task-number: QDS-10011
Change-Id: Id3f2e406414a4e103471b9351db3fea3f686c83d
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Samuel Ghinet
2023-06-13 16:01:22 +03:00
committed by Tim Jenssen
parent 5464d60728
commit e30873adeb
2 changed files with 20 additions and 6 deletions

View File

@@ -9,6 +9,7 @@
#include <QDir> #include <QDir>
#include <QQmlEngine> #include <QQmlEngine>
#include <QRandomGenerator> #include <QRandomGenerator>
#include <QSslSocket>
namespace QmlDesigner { namespace QmlDesigner {
@@ -38,6 +39,22 @@ bool FileDownloader::deleteFileAtTheEnd() const
return m_targetFilePath.isEmpty(); 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() void FileDownloader::start()
{ {
emit downloadStarting(); emit downloadStarting();
@@ -48,9 +65,7 @@ void FileDownloader::start()
m_outputFile.setFileName(tempFileName); m_outputFile.setFileName(tempFileName);
m_outputFile.open(QIODevice::WriteOnly); m_outputFile.open(QIODevice::WriteOnly);
auto request = QNetworkRequest(m_url); QNetworkRequest request = makeRequest();
request.setAttribute(QNetworkRequest::RedirectPolicyAttribute,
QNetworkRequest::UserVerifiedRedirectPolicy);
QNetworkReply *reply = Utils::NetworkAccessManager::instance()->get(request); QNetworkReply *reply = Utils::NetworkAccessManager::instance()->get(request);
m_reply = reply; m_reply = reply;
@@ -255,9 +270,7 @@ void FileDownloader::doProbeUrl()
return; return;
} }
auto request = QNetworkRequest(m_url); QNetworkRequest request = makeRequest();
request.setAttribute(QNetworkRequest::RedirectPolicyAttribute,
QNetworkRequest::UserVerifiedRedirectPolicy);
QNetworkReply *reply = Utils::NetworkAccessManager::instance()->head(request); QNetworkReply *reply = Utils::NetworkAccessManager::instance()->head(request);
QNetworkReply::connect(reply, &QNetworkReply::redirected, [reply](const QUrl &) { QNetworkReply::connect(reply, &QNetworkReply::redirected, [reply](const QUrl &) {

View File

@@ -78,6 +78,7 @@ signals:
private: private:
void doProbeUrl(); void doProbeUrl();
bool deleteFileAtTheEnd() const; bool deleteFileAtTheEnd() const;
QNetworkRequest makeRequest() const;
QUrl m_url; QUrl m_url;
bool m_probeUrl = false; bool m_probeUrl = false;