[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [discover/Plasma/5.14] libdiscover/backends/PackageKitBackend: pk: make sure we don't DoS PackageKit
From: Aleix Pol <null () kde ! org>
Date: 2018-09-25 12:50:03
Message-ID: E1g4mmx-0005xv-Mh () code ! kde ! org
[Download RAW message or body]
Git commit db216a4085cff1b45fb93ee1dfed8f9ebffee8d5 by Aleix Pol.
Committed on 25/09/2018 at 12:48.
Pushed by apol into branch 'Plasma/5.14'.
pk: make sure we don't DoS PackageKit with refreshes under apt
Fallback into daily refreshes otherwise
M +7 -4 libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp
https://commits.kde.org/discover/db216a4085cff1b45fb93ee1dfed8f9ebffee8d5
diff --git a/libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp \
b/libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp index \
0f3e283d..57aa1a16 100644
--- a/libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp
+++ b/libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp
@@ -59,16 +59,17 @@ PackageKitNotifier::PackageKitNotifier(QObject* parent)
const QString aptconfig = \
QStandardPaths::findExecutable(QStringLiteral("apt-config")); if \
(!aptconfig.isEmpty()) {
- auto process = checkAptVariable(aptconfig, \
QLatin1String("Apt::Periodic::Update-Package-Lists"), [regularCheck](const \
QStringRef& value) { + checkAptVariable(aptconfig, \
QLatin1String("Apt::Periodic::Update-Package-Lists"), [regularCheck](const \
QStringRef& value) { bool ok;
int time = value.toInt(&ok);
if (ok && time > 0) {
regularCheck->setInterval(time * 60 * 60 * 1000);
- regularCheck->start();
- } else
+ } else {
+ regularCheck->setInterval(24 * 60 * 60 * 1000); //refresh at least \
once every day
qWarning() << "couldn't understand value for timer:" << value;
+ }
+ regularCheck->start();
});
- connect(process, static_cast<void(QProcess::*)(int)>(&QProcess::finished), \
regularCheck, static_cast<void(QTimer::*)()>(&QTimer::start)); } else {
regularCheck->setInterval(24 * 60 * 60 * 1000); //refresh at least once \
every day regularCheck->start();
@@ -262,8 +263,10 @@ QProcess* PackageKitNotifier::checkAptVariable(const QString \
&aptconfig, const Q const auto match = rx.match(line);
if (match.hasMatch()) {
func(match.capturedRef(1));
+ return;
}
}
+ func({});
});
connect(process, static_cast<void(QProcess::*)(int)>(&QProcess::finished), \
process, &QObject::deleteLater); return process;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic