forked from pool/chrony
60 lines
2.0 KiB
Diff
60 lines
2.0 KiB
Diff
From 83f90279b0fdd64c1d67d479de5e60ee068b9499 Mon Sep 17 00:00:00 2001
|
|
From: Patrick Oppenlander <patrick.oppenlander@gmail.com>
|
|
Date: Thu, 8 Feb 2024 14:36:27 +1100
|
|
Subject: [PATCH] leapdb: move source check into separate function
|
|
|
|
The sanity checks are valid for all possible sources of leap second
|
|
information, so move them into a separate function check_leap_source().
|
|
---
|
|
leapdb.c | 32 +++++++++++++++++++++-----------
|
|
1 file changed, 21 insertions(+), 11 deletions(-)
|
|
|
|
diff --git a/leapdb.c b/leapdb.c
|
|
index 32f753a..aa49b3c 100644
|
|
--- a/leapdb.c
|
|
+++ b/leapdb.c
|
|
@@ -93,22 +93,32 @@ get_tz_leap(time_t when, int *tai_offset)
|
|
|
|
/* ================================================== */
|
|
|
|
+static int
|
|
+check_leap_source(NTP_Leap (*src)(time_t when, int *tai_offset))
|
|
+{
|
|
+ int tai_offset = 0;
|
|
+
|
|
+ /* Check that the leap second source has good data for Jun 30 2012 and Dec 31 2012 */
|
|
+ if (src(1341014400, &tai_offset) == LEAP_InsertSecond && tai_offset == 34 &&
|
|
+ src(1356912000, &tai_offset) == LEAP_Normal && tai_offset == 35)
|
|
+ return 1;
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+/* ================================================== */
|
|
+
|
|
void
|
|
LDB_Initialise(void)
|
|
{
|
|
- int tai_offset;
|
|
-
|
|
leap_tzname = CNF_GetLeapSecTimezone();
|
|
- if (leap_tzname) {
|
|
- /* Check that the timezone has good data for Jun 30 2012 and Dec 31 2012 */
|
|
- if (get_tz_leap(1341014400, &tai_offset) == LEAP_InsertSecond && tai_offset == 34 &&
|
|
- get_tz_leap(1356912000, &tai_offset) == LEAP_Normal && tai_offset == 35) {
|
|
- LOG(LOGS_INFO, "Using %s timezone to obtain leap second data", leap_tzname);
|
|
- } else {
|
|
- LOG(LOGS_WARN, "Timezone %s failed leap second check, ignoring", leap_tzname);
|
|
- leap_tzname = NULL;
|
|
- }
|
|
+ if (leap_tzname && !check_leap_source(get_tz_leap)) {
|
|
+ LOG(LOGS_WARN, "Timezone %s failed leap second check, ignoring", leap_tzname);
|
|
+ leap_tzname = NULL;
|
|
}
|
|
+
|
|
+ if (leap_tzname)
|
|
+ LOG(LOGS_INFO, "Using %s timezone to obtain leap second data", leap_tzname);
|
|
}
|
|
|
|
/* ================================================== */
|