timesync: fix parsing FallbackNTP= (#40692)

Follow-up for 3745770ae4.
Fixes #40621.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2026-02-16 10:16:21 +01:00
committed by GitHub
3 changed files with 19 additions and 13 deletions
+2 -2
View File
@@ -15,9 +15,9 @@ TEST(manager_parse_string) {
assert_se(manager_new(&m) == 0);
assert_se(!m->have_fallbacks);
assert_se(!m->fallback_set);
assert_se(manager_parse_server_string(m, SERVER_FALLBACK, NTP_SERVERS) == 0);
assert_se(m->have_fallbacks);
assert_se(m->fallback_set);
assert_se(manager_parse_fallback_string(m, NTP_SERVERS) == 0);
assert_se(manager_parse_server_string(m, SERVER_SYSTEM, "time1.foobar.com time2.foobar.com axrfav.,avf..ra 12345..123") == 0);
+16 -10
View File
@@ -20,7 +20,7 @@ int manager_parse_server_string(Manager *m, ServerType type, const char *string)
first = type == SERVER_FALLBACK ? m->fallback_servers : m->system_servers;
if (type == SERVER_FALLBACK)
m->have_fallbacks = true;
m->fallback_set = true;
for (;;) {
_cleanup_free_ char *word = NULL;
@@ -59,7 +59,7 @@ int manager_parse_server_string(Manager *m, ServerType type, const char *string)
}
int manager_parse_fallback_string(Manager *m, const char *string) {
if (m->have_fallbacks)
if (m->fallback_set)
return 0;
return manager_parse_server_string(m, SERVER_FALLBACK, string);
@@ -84,15 +84,21 @@ int config_parse_servers(
assert(lvalue);
assert(rvalue);
if (isempty(rvalue))
if (isempty(rvalue)) {
manager_flush_server_names(m, ltype);
else {
r = manager_parse_server_string(m, ltype, rvalue);
if (r < 0) {
log_syntax(unit, LOG_WARNING, filename, line, r,
"Failed to parse NTP server string '%s', ignoring: %m", rvalue);
return 0;
}
/* FallbackNTP= with an empty string disables the built-in fallback servers. */
if (ltype == SERVER_FALLBACK)
m->fallback_set = true;
return 0;
}
r = manager_parse_server_string(m, ltype, rvalue);
if (r < 0) {
log_syntax(unit, LOG_WARNING, filename, line, r,
"Failed to parse NTP server string '%s', ignoring: %m", rvalue);
return 0;
}
return 0;
+1 -1
View File
@@ -33,7 +33,7 @@ typedef struct Manager {
RateLimit ratelimit;
bool exhausted_servers;
bool have_fallbacks;
bool fallback_set; /* Indicate if FallbackNTP= is explicitly configured. */
/* network */
sd_event_source *network_event_source;