From: Patrick Oppenlander <patrick.oppenlan...@gmail.com> 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 | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-)
diff --git a/leapdb.c b/leapdb.c index 91dbf9e..17c9872 100644 --- a/leapdb.c +++ b/leapdb.c @@ -33,6 +33,8 @@ /* ================================================== */ +typedef NTP_Leap (*GetLeapFn)(time_t when, int *tai_offset); + /* Name of a system timezone containing leap seconds occuring at midnight */ static char *leap_tzname; @@ -93,22 +95,32 @@ get_tz_leap(time_t when, int *tai_offset) /* ================================================== */ -void -LDB_Initialise(void) +static int +check_leap_source(GetLeapFn fn) { int tai_offset; + /* Check that the leap second source has good data for Jun 30 2012 and Dec 31 2012 */ + if (fn(1341014400, &tai_offset) == LEAP_InsertSecond && tai_offset == 34 && + fn(1356912000, &tai_offset) == LEAP_Normal && tai_offset == 35) + return 1; + + return 0; +} + +/* ================================================== */ + +void +LDB_Initialise(void) +{ 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); } /* ================================================== */ -- 2.43.0 -- To unsubscribe email chrony-dev-requ...@chrony.tuxfamily.org with "unsubscribe" in the subject. For help email chrony-dev-requ...@chrony.tuxfamily.org with "help" in the subject. Trouble? Email listmas...@chrony.tuxfamily.org.