X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Futil%2Ftime.rs;h=f450dc2c3015ae4da00faa2d609d01542753b85d;hb=f961daef33ad1e999c83aafbf654db449e0e93e0;hp=d3768aa7ca6441d2943c5ac080e57113ab9d957d;hpb=1fd6c6fb9f7e58e8c0cf6539e7a9451e57a2b6fd;p=rust-lightning diff --git a/lightning/src/util/time.rs b/lightning/src/util/time.rs index d3768aa7..f450dc2c 100644 --- a/lightning/src/util/time.rs +++ b/lightning/src/util/time.rs @@ -65,7 +65,12 @@ impl Time for std::time::Instant { } fn duration_since(&self, earlier: Self) -> Duration { - self.duration_since(earlier) + // On rust prior to 1.60 `Instant::duration_since` will panic if time goes backwards. + // However, we support rust versions prior to 1.60 and some users appear to have "monotonic + // clocks" that go backwards in practice (likely relatively ancient kernels/etc). Thus, we + // manually check for time going backwards here and return a duration of zero in that case. + let now = Self::now(); + if now > earlier { now - earlier } else { Duration::from_secs(0) } } fn duration_since_epoch() -> Duration {