From 3556dadea1b0ccbd7685ebd903eb521229843bf7 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Mon, 18 Jul 2022 12:50:05 +0200 Subject: [PATCH] ntp: enable sub-second poll sooner with filter option When the minimum round-trip time is checked to enable a sub-second polling interval, consider also the last sample in the filter to avoid waiting for the first sample to be accumulated in sourcestats. --- ntp_core.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ntp_core.c b/ntp_core.c index cd8b627..6e4745b 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -783,6 +783,8 @@ NCR_ChangeRemoteAddress(NCR_Instance inst, NTP_Remote_Address *remote_addr, int static void adjust_poll(NCR_Instance inst, double adj) { + NTP_Sample last_sample; + inst->poll_score += adj; if (inst->poll_score >= 1.0) { @@ -808,7 +810,9 @@ adjust_poll(NCR_Instance inst, double adj) or it is not in a local network according to the measured delay */ if (inst->local_poll < MIN_NONLAN_POLL && (!SRC_IsReachable(inst->source) || - SST_MinRoundTripDelay(SRC_GetSourcestats(inst->source)) > MAX_LAN_PEER_DELAY)) + (SST_MinRoundTripDelay(SRC_GetSourcestats(inst->source)) > MAX_LAN_PEER_DELAY && + (!inst->filter || !SPF_GetLastSample(inst->filter, &last_sample) || + last_sample.peer_delay > MAX_LAN_PEER_DELAY)))) inst->local_poll = MIN_NONLAN_POLL; }