summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-07-30 20:47:41 +0200
committerGitHub <noreply@github.com>2020-07-30 20:47:41 +0200
commit3660da17b0d6a0954a7e90eaca58d35ae53846e2 (patch)
treedf7477d78461dcdf9553486f62a7947814625f5c /src
parente7e954243a17cceb5278aac6249ee0dcc119b1eb (diff)
parent5919bd3df32b2eec0accb54b23fcf0878d3914cd (diff)
downloadsystemd-3660da17b0d6a0954a7e90eaca58d35ae53846e2.tar.gz
Merge pull request #16624 from keszybz/timesync-retry-interval
Make timesyncd retry interval grow more slowly
Diffstat (limited to 'src')
-rw-r--r--src/timedate/timedatectl.c2
-rw-r--r--src/timesync/timesyncd-manager.c9
-rw-r--r--src/timesync/timesyncd-manager.h3
3 files changed, 8 insertions, 6 deletions
diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c
index 26d3e20353..7afc37d9e3 100644
--- a/src/timedate/timedatectl.c
+++ b/src/timedate/timedatectl.c
@@ -409,7 +409,7 @@ static int print_ntp_status_info(NTPStatusInfo *i) {
if (r < 0)
return table_log_add_error(r);
- r = table_add_cell_stringf(table, NULL, "%s (%s)", i->server_address, i->server_name);
+ r = table_add_cell_stringf(table, NULL, "%s (%s)", strna(i->server_address), strna(i->server_name));
if (r < 0)
return table_log_add_error(r);
diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c
index dadf213a80..5570408fa1 100644
--- a/src/timesync/timesyncd-manager.c
+++ b/src/timesync/timesyncd-manager.c
@@ -137,11 +137,10 @@ static int manager_send_request(Manager *m) {
}
/* re-arm timer with increasing timeout, in case the packets never arrive back */
- if (m->retry_interval > 0) {
- if (m->retry_interval < m->poll_interval_max_usec)
- m->retry_interval *= 2;
- } else
- m->retry_interval = m->poll_interval_min_usec;
+ if (m->retry_interval == 0)
+ m->retry_interval = NTP_RETRY_INTERVAL_MIN_USEC;
+ else
+ m->retry_interval = MIN(m->retry_interval * 4/3, NTP_RETRY_INTERVAL_MAX_USEC);
r = manager_arm_timer(m, m->retry_interval);
if (r < 0)
diff --git a/src/timesync/timesyncd-manager.h b/src/timesync/timesyncd-manager.h
index 97c4e2ff34..d74521c9cf 100644
--- a/src/timesync/timesyncd-manager.h
+++ b/src/timesync/timesyncd-manager.h
@@ -24,6 +24,9 @@ typedef struct Manager Manager;
#define NTP_POLL_INTERVAL_MIN_USEC (32 * USEC_PER_SEC)
#define NTP_POLL_INTERVAL_MAX_USEC (2048 * USEC_PER_SEC)
+#define NTP_RETRY_INTERVAL_MIN_USEC (15 * USEC_PER_SEC)
+#define NTP_RETRY_INTERVAL_MAX_USEC (6 * 60 * USEC_PER_SEC) /* 6 minutes */
+
struct Manager {
sd_bus *bus;
sd_event *event;