timesync: fix parsing FallbackNTP= (#40692)
Follow-up for 3745770ae4.
Fixes #40621.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user