From: Miroslav Lichvar Date: Thu, 12 May 2016 13:43:42 +0000 (+0200) Subject: ntp: don't check for synchronization loop in special reference modes X-Git-Tag: 2.4-pre1~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b48e4421debd448eb9a25f6fd592129e6d2b5690;p=thirdparty%2Fchrony.git ntp: don't check for synchronization loop in special reference modes If a special reference mode is enabled, always pass the test for synchronization loop. This allows chronyd using the initstepslew directive (or the -q/-Q option) to accept time from its own clients after restart as is documented in the chrony.conf man page. This was broken since update to NTPv4. --- diff --git a/ntp_core.c b/ntp_core.c index 3d3a6123..79426937 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -1348,7 +1348,8 @@ receive_packet(NTP_Packet *message, struct timeval *now, double now_err, NCR_Ins /* Test D requires that the remote peer is not synchronised to us to prevent a synchronisation loop */ - testD = message->stratum <= 1 || pkt_refid != UTI_IPToRefid(&local_addr->ip_addr); + testD = message->stratum <= 1 || REF_GetMode() != REF_ModeNormal || + pkt_refid != UTI_IPToRefid(&local_addr->ip_addr); } else { offset = delay = dispersion = 0.0; sample_time = *now;