Skip to content

Commit 6f4d395

Browse files
committed
Do not serialize Channel::last_sent_closing_fee to disk
We're supposed to write `Channel` to disk as if `remove_uncommitted_htlcs_and_mark_paused` had just run, however we were writing `last_sent_closing_fee` to disk (if it is not-None), whereas `remove_uncommitted_htlcs_and_mark_paused` clears it. Indeed, the BOLTs say fee "... negotiation restarts on reconnection."
1 parent 0385efb commit 6f4d395

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

lightning/src/ln/channel.rs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4646,15 +4646,11 @@ impl<Signer: Sign> Writeable for Channel<Signer> {
46464646
self.update_time_counter.write(writer)?;
46474647
self.feerate_per_kw.write(writer)?;
46484648

4649-
match self.last_sent_closing_fee {
4650-
Some((feerate, fee, sig)) => {
4651-
1u8.write(writer)?;
4652-
feerate.write(writer)?;
4653-
fee.write(writer)?;
4654-
sig.write(writer)?;
4655-
},
4656-
None => 0u8.write(writer)?,
4657-
}
4649+
// Versions prior to 0.0.100 expected to read the fields of `last_sent_closing_fee` here,
4650+
// however we are supposed to restart shutdown fee negotiation on reconnect (and wipe
4651+
// `last_send_closing_fee` in `remove_uncommitted_htlcs_and_mark_paused`) so we should never
4652+
// consider the stale state on reload.
4653+
0u8.write(writer)?;
46584654

46594655
self.funding_tx_confirmed_in.write(writer)?;
46604656
self.funding_tx_confirmation_height.write(writer)?;
@@ -4849,11 +4845,19 @@ impl<'a, Signer: Sign, K: Deref> ReadableArgs<&'a K> for Channel<Signer>
48494845
let update_time_counter = Readable::read(reader)?;
48504846
let feerate_per_kw = Readable::read(reader)?;
48514847

4852-
let last_sent_closing_fee = match <u8 as Readable>::read(reader)? {
4853-
0 => None,
4854-
1 => Some((Readable::read(reader)?, Readable::read(reader)?, Readable::read(reader)?)),
4848+
// Versions prior to 0.0.100 expected to read the fields of `last_sent_closing_fee` here,
4849+
// however we are supposed to restart shutdown fee negotiation on reconnect (and wipe
4850+
// `last_send_closing_fee` in `remove_uncommitted_htlcs_and_mark_paused`) so we should never
4851+
// consider the stale state on reload.
4852+
match <u8 as Readable>::read(reader)? {
4853+
0 => {},
4854+
1 => {
4855+
let _: u32 = Readable::read(reader)?;
4856+
let _: u64 = Readable::read(reader)?;
4857+
let _: Signature = Readable::read(reader)?;
4858+
},
48554859
_ => return Err(DecodeError::InvalidValue),
4856-
};
4860+
}
48574861

48584862
let funding_tx_confirmed_in = Readable::read(reader)?;
48594863
let funding_tx_confirmation_height = Readable::read(reader)?;
@@ -4960,7 +4964,7 @@ impl<'a, Signer: Sign, K: Deref> ReadableArgs<&'a K> for Channel<Signer>
49604964
#[cfg(debug_assertions)]
49614965
counterparty_max_commitment_tx_output: ::std::sync::Mutex::new((0, 0)),
49624966

4963-
last_sent_closing_fee,
4967+
last_sent_closing_fee: None,
49644968

49654969
funding_tx_confirmed_in,
49664970
funding_tx_confirmation_height,

0 commit comments

Comments
 (0)