From 5308e0a25f9efdf01ead0b77e769bbb494661cd0 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Thu, 22 Feb 2018 17:30:23 +0100 Subject: [PATCH] sources: include maxclockerror in source selection In the source selection algorithm, include extra dispersion due to maxclockerror in the root distance of sources that don't have new samples (the last sample is older than span of all samples) to not prefer unreachable sources with a short distance and small skew over reachable sources for too long, and also to decrease their chances of becoming falsetickers. --- sources.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sources.c b/sources.c index 67b61e7..8aaa4a6 100644 --- a/sources.c +++ b/sources.c @@ -665,6 +665,16 @@ SRC_SelectSource(SRC_Instance updated_inst) continue; } + /* Include extra dispersion in the root distance of sources that don't + have new samples (the last sample is older than span of all samples) */ + if (first_sample_ago < 2.0 * si->last_sample_ago) { + double extra_disp = LCL_GetMaxClockError() * + (2.0 * si->last_sample_ago - first_sample_ago); + si->root_distance += extra_disp; + si->lo_limit -= extra_disp; + si->hi_limit += extra_disp; + } + /* Require the root distance to be below the allowed maximum */ if (si->root_distance > max_distance) { sources[i]->status = SRC_BAD_DISTANCE;