]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
samplefilt: drop last sample in SPF_DropSamples()
authorMiroslav Lichvar <mlichvar@redhat.com>
Wed, 11 May 2022 09:04:52 +0000 (11:04 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Wed, 11 May 2022 12:21:09 +0000 (14:21 +0200)
When SPF_DropSamples() is called, don't keep the last sample to be
retrieved by SPF_GetLastSample(). It should be kept only after
filtering.

samplefilt.c
test/unit/samplefilt.c

index 9cb892d3299cccd0a569eb7370ea813a2236db13..c3ee8b37145815d4d4aa5740ad609c6ad6c445d9 100644 (file)
@@ -170,11 +170,21 @@ SPF_GetAvgSampleDispersion(SPF_Instance filter)
 
 /* ================================================== */
 
-void
-SPF_DropSamples(SPF_Instance filter)
+static void
+drop_samples(SPF_Instance filter, int keep_last)
 {
   filter->index = -1;
   filter->used = 0;
+  if (!keep_last)
+    filter->last = -1;
+}
+
+/* ================================================== */
+
+void
+SPF_DropSamples(SPF_Instance filter)
+{
+  drop_samples(filter, 0);
 }
 
 /* ================================================== */
@@ -405,7 +415,7 @@ SPF_GetFilteredSample(SPF_Instance filter, NTP_Sample *sample)
   if (!combine_selected_samples(filter, n, sample))
     return 0;
 
-  SPF_DropSamples(filter);
+  drop_samples(filter, 1);
 
   return 1;
 }
index 20e6febca394425cd57ceb14ca617452ac2c94a7..22df1259560bdaffd0d00810e18611896e44ddc0 100644 (file)
@@ -103,6 +103,7 @@ test_unit(void)
 
       } else {
         SPF_DropSamples(filter);
+        TEST_CHECK(filter->last < 0);
       }
 
       TEST_CHECK(SPF_GetNumberOfSamples(filter) == 0);