diff --git a/doc/chrony.conf.adoc b/doc/chrony.conf.adoc index 8cca026..55d20ca 100644 --- a/doc/chrony.conf.adoc +++ b/doc/chrony.conf.adoc @@ -204,10 +204,11 @@ the default value is 4. + On start, when the pool name is resolved, *chronyd* will add up to 16 sources, one for each resolved address. When the number of sources from which at least -one valid reply was received reaches *maxsources*, the other sources will be -removed. When a pool source is unreachable or marked as a falseticker, -*chronyd* will try to replace the source with a newly resolved address of the -pool. +one valid reply was received reaches the number specified by the *maxsources* +option, the other sources will be removed. When a pool source is unreachable, +marked as a falseticker, or has a distance larger than the limit set by the +<> directive, *chronyd* will try to replace the +source with a newly resolved address from the pool. + An example of the *pool* directive is + diff --git a/sources.c b/sources.c index 04bd36b..28fc16b 100644 --- a/sources.c +++ b/sources.c @@ -429,9 +429,11 @@ SRC_UpdateReachability(SRC_Instance inst, int reachable) REF_SetUnsynchronised(); } - /* Try to replace NTP sources that are unreachable or falsetickers */ - if (inst->type == SRC_NTP && (inst->status == SRC_FALSETICKER || - (!inst->reachability && inst->reachability_size == SOURCE_REACH_BITS))) { + /* Try to replace NTP sources that are unreachable, falsetickers, or + have root distance larger than the allowed maximum */ + if (inst->type == SRC_NTP && + ((!inst->reachability && inst->reachability_size == SOURCE_REACH_BITS) || + inst->status == SRC_FALSETICKER || inst->status == SRC_BAD_DISTANCE)) { NSR_HandleBadSource(inst->ip_addr); } }