OSDN Git Service

kdirshare: stop the server if service publishing fails
authorIvailo Monev <xakepa10@gmail.com>
Mon, 9 May 2022 15:52:51 +0000 (18:52 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Mon, 9 May 2022 15:52:51 +0000 (18:52 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
kdirshare/kded/kded_kdirshare.cpp
kdirshare/kded/kdirshareimpl.cpp

index 7f5c513..1fe3436 100644 (file)
@@ -72,6 +72,7 @@ QString KDirShareModule::share(const QString &dirpath)
         return i18n("Could not serve: %1", kdirshareimpl->errorString());
     }
     if (!kdirshareimpl->publishService()) {
+        kdirshareimpl->stop();
         kdirshareimpl->deleteLater();
         return i18n("Could not publish service for: %1", dirpath);
     }
index bde50aa..4ab1a6d 100644 (file)
@@ -27,6 +27,8 @@
 #include <kmimetype.h>
 #include <kdebug.h>
 
+static const QDir::SortFlags s_dirsortflags = (QDir::Name | QDir::DirsFirst);
+
 static QByteArray contentForDirectory(const QString &path, const QString &basedir)
 {
     QByteArray data;
@@ -42,9 +44,8 @@ static QByteArray contentForDirectory(const QString &path, const QString &basedi
     if (QDir::cleanPath(path) == QDir::cleanPath(basedir)) {
         dirfilters = (QDir::Files | QDir::AllDirs | QDir::NoDotAndDotDot);
     }
-    const QDir::SortFlags dirsortflags = (QDir::Name | QDir::DirsFirst);
     QDir dir(path);
-    foreach (const QFileInfo &fileinfo, dir.entryInfoList(dirfilters, dirsortflags)) {
+    foreach (const QFileInfo &fileinfo, dir.entryInfoList(dirfilters, s_dirsortflags)) {
         const QString fullpath = path.toLocal8Bit() + QLatin1Char('/') + fileinfo.fileName();
         // chromium does weird stuff if the link starts with two slashes - removes, the host and
         // port part of the link (or rather does not prepend them) and converts the first directory