summaryrefslogtreecommitdiff
path: root/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-geolocation-deadlock.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-geolocation-deadlock.patch')
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-geolocation-deadlock.patch194
1 files changed, 0 insertions, 194 deletions
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-geolocation-deadlock.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-geolocation-deadlock.patch
deleted file mode 100644
index 70bd28419472..000000000000
--- a/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-geolocation-deadlock.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-https://invent.kde.org/plasma/plasma-workspace/-/commit/d693026676cc6bf2b7c23e9ff4b620679cf15d10
-
-From d693026676cc6bf2b7c23e9ff4b620679cf15d10 Mon Sep 17 00:00:00 2001
-From: Nicolas Fella <nicolas.fella@gmx.de>
-Date: Mon, 15 Aug 2022 18:36:56 +0200
-Subject: [PATCH] [dataengines/geolocation] Port from KIO::http_post to
- QNetworkAccessManager
-
-Not only does this slightly simplify the code, it also avoids a deadlock in kded when automatic proxy detection is enabled
-
-BUG: 449984
-
-BUG: 457341
-(cherry picked from commit 98cadd48c21c89b81fdeb3499a557a6551a09d8a)
----
- dataengines/geolocation/CMakeLists.txt | 2 +-
- dataengines/geolocation/location_ip.cpp | 84 ++++++++++---------------
- 2 files changed, 35 insertions(+), 51 deletions(-)
-
-diff --git a/dataengines/geolocation/CMakeLists.txt b/dataengines/geolocation/CMakeLists.txt
-index 175687bd4d..6ae707643c 100644
---- a/dataengines/geolocation/CMakeLists.txt
-+++ b/dataengines/geolocation/CMakeLists.txt
-@@ -36,7 +36,7 @@ target_link_libraries(plasma_engine_geolocation
- kcoreaddons_add_plugin(plasma-geolocation-ip SOURCES location_ip.cpp INSTALL_NAMESPACE plasma/geolocationprovider)
- ecm_qt_declare_logging_category(plasma-geolocation-ip HEADER geolocdebug.h IDENTIFIER DATAENGINE_GEOLOCATION CATEGORY_NAME org.kde.plasma.dataengine.geolocation)
- target_compile_definitions(plasma-geolocation-ip PRIVATE -DQT_NO_KEYWORDS)
--target_link_libraries(plasma-geolocation-ip plasma-geolocation-interface KF5::KIOCore KF5::NetworkManagerQt)
-+target_link_libraries(plasma-geolocation-ip plasma-geolocation-interface KF5::NetworkManagerQt)
-
- pkg_check_modules(LIBGPS libgps IMPORTED_TARGET)
-
-diff --git a/dataengines/geolocation/location_ip.cpp b/dataengines/geolocation/location_ip.cpp
-index 27b530810c..3c5a202b89 100644
---- a/dataengines/geolocation/location_ip.cpp
-+++ b/dataengines/geolocation/location_ip.cpp
-@@ -12,15 +12,14 @@
-
- #include "location_ip.h"
- #include "geolocdebug.h"
--#include <KIO/Job>
--#include <KIO/TransferJob>
--#include <KJob>
- #include <KSharedConfig>
- #include <NetworkManagerQt/Manager>
- #include <NetworkManagerQt/WirelessDevice>
- #include <QJsonArray>
- #include <QJsonDocument>
- #include <QJsonObject>
-+#include <QNetworkAccessManager>
-+#include <QNetworkReply>
- #include <QUrl>
-
- class Ip::Private : public QObject
-@@ -30,19 +29,21 @@ public:
- Private(Ip *q)
- : q(q)
- {
-+ m_nam.setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
-+ m_nam.setStrictTransportSecurityEnabled(true);
-+ m_nam.enableStrictTransportSecurityStore(true,
-+ QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/plasmashell/hsts/"));
- }
-
-- void readGeoLocation(KJob *job)
-+ void readGeoLocation(QNetworkReply *reply)
- {
- m_geoLocationResolved = true;
-- if (job && job->error()) {
-- qCCritical(DATAENGINE_GEOLOCATION) << "error: " << job->errorString();
-- m_geoLocationPayload.clear();
-+ if (reply->error()) {
-+ qCCritical(DATAENGINE_GEOLOCATION) << "error: " << reply->errorString();
- checkUpdateData();
- return;
- }
-- const QJsonObject json = QJsonDocument::fromJson(m_geoLocationPayload).object();
-- m_geoLocationPayload.clear();
-+ const QJsonObject json = QJsonDocument::fromJson(reply->readAll()).object();
-
- auto accuracyIt = json.find(QStringLiteral("accuracy"));
- if (accuracyIt != json.end()) {
-@@ -62,52 +63,28 @@ public:
-
- void clear()
- {
-- m_geoLocationPayload.clear();
-- m_countryPayload.clear();
- m_countryResolved = false;
- m_geoLocationResolved = false;
- m_data.clear();
- }
-
-- void geoLocationData(KIO::Job *job, const QByteArray &data)
-- {
-- Q_UNUSED(job)
--
-- if (data.isEmpty()) {
-- return;
-- }
-- m_geoLocationPayload.append(data);
-- }
--
-- void countryData(KIO::Job *job, const QByteArray &data)
-- {
-- Q_UNUSED(job)
--
-- if (data.isEmpty()) {
-- return;
-- }
-- m_countryPayload.append(data);
-- }
--
-- void readCountry(KJob *job)
-+ void readCountry(QNetworkReply *reply)
- {
- m_countryResolved = true;
-- if (job && job->error()) {
-- qCCritical(DATAENGINE_GEOLOCATION) << "error: " << job->errorString();
-- m_countryPayload.clear();
-+ if (reply->error()) {
-+ qCCritical(DATAENGINE_GEOLOCATION) << "error: " << reply->errorString();
- checkUpdateData();
- return;
- }
-
-- const QJsonObject json = QJsonDocument::fromJson(m_countryPayload).object();
-- m_countryPayload.clear();
-+ const QJsonObject json = QJsonDocument::fromJson(reply->readAll()).object();
-
- m_data[QStringLiteral("country")] = json.value(QStringLiteral("country_name")).toString();
- m_data[QStringLiteral("country code")] = json.value(QStringLiteral("country_code")).toString();
-+
- checkUpdateData();
- }
-
--private:
- void checkUpdateData()
- {
- if (!m_countryResolved || !m_geoLocationResolved) {
-@@ -117,11 +94,10 @@ private:
- }
-
- Ip *q;
-- QByteArray m_geoLocationPayload;
-- QByteArray m_countryPayload;
- bool m_countryResolved = false;
- bool m_geoLocationResolved = false;
- Plasma::DataEngine::Data m_data;
-+ QNetworkAccessManager m_nam;
- };
-
- Ip::Ip(QObject *parent, const QVariantList &args)
-@@ -176,18 +152,26 @@ void Ip::update()
- }
- const QByteArray postData = QJsonDocument(request).toJson(QJsonDocument::Compact);
- const QString apiKey = QStringLiteral("60e8eae6-3988-4ada-ad48-2cfddddf216b");
-- KIO::TransferJob *datajob =
-- KIO::http_post(QUrl(QStringLiteral("https://location.services.mozilla.com/v1/geolocate?key=%1").arg(apiKey)), postData, KIO::HideProgressInfo);
-- datajob->addMetaData(QStringLiteral("content-type"), QStringLiteral("application/json"));
-
- qCDebug(DATAENGINE_GEOLOCATION) << "Fetching https://location.services.mozilla.com/v1/geolocate";
-- connect(datajob, &KIO::TransferJob::data, d, &Ip::Private::geoLocationData);
-- connect(datajob, &KIO::TransferJob::result, d, &Ip::Private::readGeoLocation);
--
-- datajob = KIO::http_post(QUrl(QStringLiteral("https://location.services.mozilla.com/v1/country?key=%1").arg(apiKey)), postData, KIO::HideProgressInfo);
-- datajob->addMetaData(QStringLiteral("content-type"), QStringLiteral("application/json"));
-- connect(datajob, &KIO::TransferJob::data, d, &Ip::Private::countryData);
-- connect(datajob, &KIO::TransferJob::result, d, &Ip::Private::readCountry);
-+ QNetworkRequest locationRequest(QUrl(QStringLiteral("https://location.services.mozilla.com/v1/geolocate?key=%1").arg(apiKey)));
-+ locationRequest.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json"));
-+ QNetworkReply *locationReply = d->m_nam.post(locationRequest, postData);
-+
-+ connect(locationReply, &QNetworkReply::finished, this, [this, locationReply] {
-+ locationReply->deleteLater();
-+ d->readGeoLocation(locationReply);
-+ });
-+
-+ qCDebug(DATAENGINE_GEOLOCATION) << "Fetching https://location.services.mozilla.com/v1/country";
-+ QNetworkRequest countryRequest(QUrl(QStringLiteral("https://location.services.mozilla.com/v1/country?key=%1").arg(apiKey)));
-+ countryRequest.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json"));
-+ QNetworkReply *countryReply = d->m_nam.post(countryRequest, postData);
-+
-+ connect(countryReply, &QNetworkReply::finished, this, [this, countryReply] {
-+ countryReply->deleteLater();
-+ d->readCountry(countryReply);
-+ });
- }
-
- K_PLUGIN_CLASS_WITH_JSON(Ip, "plasma-geolocation-ip.json")
---
-GitLab
-
-