[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