From d25f332592e45bd7f9dca68be5c12fdf74022b79 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 3 Nov 2021 01:11:25 +0000 Subject: [PATCH] Tweak serialization of ScorerUsingTime for better forward compat --- lightning/src/routing/scorer.rs | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/lightning/src/routing/scorer.rs b/lightning/src/routing/scorer.rs index 956b09a54..8b5fae70a 100644 --- a/lightning/src/routing/scorer.rs +++ b/lightning/src/routing/scorer.rs @@ -275,34 +275,48 @@ impl Writeable for ScorerUsingTime { #[inline] fn write(&self, w: &mut W) -> Result<(), io::Error> { self.params.write(w)?; - self.channel_failures.write(w) + self.channel_failures.write(w)?; + write_tlv_fields!(w, {}); + Ok(()) } } impl Readable for ScorerUsingTime { #[inline] fn read(r: &mut R) -> Result { - Ok(Self { + let res = Ok(Self { params: Readable::read(r)?, channel_failures: Readable::read(r)?, - }) + }); + read_tlv_fields!(r, {}); + res } } impl Writeable for ChannelFailure { #[inline] fn write(&self, w: &mut W) -> Result<(), io::Error> { - self.undecayed_penalty_msat.write(w)?; - (T::duration_since_epoch() - self.last_failed.elapsed()).write(w) + let duration_since_epoch = T::duration_since_epoch() - self.last_failed.elapsed(); + write_tlv_fields!(w, { + (0, self.undecayed_penalty_msat, required), + (2, duration_since_epoch, required), + }); + Ok(()) } } impl Readable for ChannelFailure { #[inline] fn read(r: &mut R) -> Result { + let mut undecayed_penalty_msat = 0; + let mut duration_since_epoch = Duration::from_secs(0); + read_tlv_fields!(r, { + (0, undecayed_penalty_msat, required), + (2, duration_since_epoch, required), + }); Ok(Self { - undecayed_penalty_msat: Readable::read(r)?, - last_failed: T::now() - (T::duration_since_epoch() - Readable::read(r)?), + undecayed_penalty_msat, + last_failed: T::now() - (T::duration_since_epoch() - duration_since_epoch), }) } } -- 2.39.5