kiran-cc-daemon/0025-fix-timedate-Fix-the-ntp-service-load-order-logic-er.patch

107 lines
4.1 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 2952b5d65d8920ab3ee41433399915b0b20b51a2 Mon Sep 17 00:00:00 2001
From: tangjie02 <tangjie02@kylinsec.com.cn>
Date: Thu, 29 Aug 2024 09:58:19 +0800
Subject: [PATCH 25/27] fix(timedate): Fix the ntp service load order logic
error.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 修复ntp服务加载顺序逻辑错误问题之前的代码加载顺序是随机的
- 去重逻辑有问题std::unique只会对相邻的元素进行去重
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
---
plugins/timedate/timedate-manager.cpp | 42 ++++++++++++++++++---------
1 file changed, 28 insertions(+), 14 deletions(-)
diff --git a/plugins/timedate/timedate-manager.cpp b/plugins/timedate/timedate-manager.cpp
index fdd9acc..1a28877 100644
--- a/plugins/timedate/timedate-manager.cpp
+++ b/plugins/timedate/timedate-manager.cpp
@@ -1,14 +1,14 @@
/**
- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd.
+ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd.
* kiran-cc-daemon is licensed under Mulan PSL v2.
- * You can use this software according to the terms and conditions of the Mulan PSL v2.
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
- * http://license.coscl.org.cn/MulanPSL2
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
- * See the Mulan PSL v2 for more details.
- *
+ * http://license.coscl.org.cn/MulanPSL2
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+ * See the Mulan PSL v2 for more details.
+ *
* Author: tangjie02 <tangjie02@kylinos.com.cn>
*/
@@ -387,7 +387,7 @@ void TimedateManager::init_ntp_units()
this->ntp_unit_name_.clear();
for (auto &ntp_unit : ntp_units)
{
- if (ntp_unit == ntp_units.back())
+ if (ntp_unit == ntp_units.front())
{
this->ntp_unit_name_ = ntp_unit;
continue;
@@ -426,11 +426,21 @@ std::vector<std::string> TimedateManager::get_ntp_units()
{
auto &unit_dir = *iter;
Glib::Dir dir(unit_dir);
+ std::vector<std::string> paths;
for (auto dir_iter = dir.begin(); dir_iter != dir.end(); ++dir_iter)
{
auto entry = *dir_iter;
auto path = fmt::format("{0}/{1}", unit_dir, entry);
+ paths.push_back(path);
+ }
+
+ // 排序确定加载优先级,字母序越大的优先使用
+ std::sort(paths.begin(), paths.end(), std::greater<std::string>());
+
+ for (auto iter = paths.begin(); iter != paths.end(); ++iter)
+ {
+ auto path = *iter;
std::string contents;
try
@@ -460,8 +470,15 @@ std::vector<std::string> TimedateManager::get_ntp_units()
continue;
}
- KLOG_DEBUG_TIMEDATE("Insert ntp unit: %s %s.", line.c_str(), entry.c_str());
- ntp_units.push_back(line);
+ if (std::find(ntp_units.begin(), ntp_units.end(), line) == ntp_units.end())
+ {
+ KLOG_DEBUG_TIMEDATE("Insert ntp unit: %s %s.", line.c_str(), path.c_str());
+ ntp_units.push_back(line);
+ }
+ else
+ {
+ KLOG_DEBUG_TIMEDATE("Ignore duplication ntp unit: %s %s.", line.c_str(), path.c_str());
+ }
}
}
}
@@ -471,9 +488,6 @@ std::vector<std::string> TimedateManager::get_ntp_units()
}
}
- // Remove duplicates.
- auto iter = std::unique(ntp_units.begin(), ntp_units.end());
- ntp_units.erase(iter, ntp_units.end());
return ntp_units;
}
--
2.27.0