fix delta calculation with extreme frequency offsets

This commit is contained in:
Miroslav Lichvar 2013-03-12 18:06:38 +01:00
parent b35f73b75b
commit 7b707a5bb0
2 changed files with 26 additions and 0 deletions

24
chrony-delta.patch Normal file
View File

@ -0,0 +1,24 @@
commit 0bb772c575b3842c38e6a58591ecea94449e9bae
Author: Miroslav Lichvar <mlichvar@redhat.com>
Date: Fri Mar 8 13:54:10 2013 +0100
Fix delta calculation with extreme frequency offsets
This should prevent chronyd from getting stuck and refusing new samples
due to failing test4 when the current measured frequency offset is close
to 1.0. That can happen when the system clock is stepped forward behind
chronyd's back.
diff --git a/ntp_core.c b/ntp_core.c
index 0fb93e1..be9f613 100644
--- a/ntp_core.c
+++ b/ntp_core.c
@@ -793,7 +793,7 @@ receive_packet(NTP_Packet *message, struct timeval *now, double now_err, NCR_Ins
assuming worst case frequency error between us and the other
source */
- delta = local_interval - remote_interval / (1.0 - source_freq_lo);
+ delta = local_interval - remote_interval * (1.0 + source_freq_lo);
/* Calculate theta. Following the NTP definition, this is negative
if we are fast of the remote source. */

View File

@ -16,6 +16,7 @@ Source7: chrony.nm-dispatcher
Source8: chrony.dhclient
Source9: chrony-wait.service
%{?gitpatch:Patch0: chrony-%{version}%{?prerelease}-%{gitpatch}.patch.gz}
Patch1: chrony-delta.patch
BuildRequires: libcap-devel libedit-devel nss-devel pps-tools-devel bison texinfo
@ -39,6 +40,7 @@ clocks, system real-time clock or manual input as time references.
%prep
%setup -q -n %{name}-%{version}%{?prerelease}
%{?gitpatch:%patch0 -p1}
%patch1 -p1 -b .delta
%{?gitpatch: echo %{version}-%{gitpatch} > version.txt}