Skip to content

Commit edd1bee

Browse files
committed
f - read_args: Option<u64>
1 parent b815cdf commit edd1bee

File tree

4 files changed

+20
-13
lines changed

4 files changed

+20
-13
lines changed

lightning/src/chain/onchaintx.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
368368
let prev_holder_commitment = Readable::read(reader)?;
369369
let _prev_holder_htlc_sigs: Option<Vec<Option<(usize, Signature)>>> = Readable::read(reader)?;
370370

371-
let channel_parameters = ReadableArgs::<u64>::read(reader, channel_value_satoshis)?;
371+
let channel_parameters = ReadableArgs::<Option<u64>>::read(reader, Some(channel_value_satoshis))?;
372372

373373
// Read the serialized signer bytes, but don't deserialize them, as we'll obtain our signer
374374
// by re-deriving the private key material.

lightning/src/ln/chan_utils.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,8 +1034,8 @@ impl Writeable for ChannelTransactionParameters {
10341034
}
10351035
}
10361036

1037-
impl ReadableArgs<u64> for ChannelTransactionParameters {
1038-
fn read<R: io::Read>(reader: &mut R, read_args: u64) -> Result<Self, DecodeError> {
1037+
impl ReadableArgs<Option<u64>> for ChannelTransactionParameters {
1038+
fn read<R: io::Read>(reader: &mut R, read_args: Option<u64>) -> Result<Self, DecodeError> {
10391039
let mut holder_pubkeys = RequiredWrapper(None);
10401040
let mut holder_selected_contest_delay = RequiredWrapper(None);
10411041
let mut is_outbound_from_holder = RequiredWrapper(None);
@@ -1058,10 +1058,17 @@ impl ReadableArgs<u64> for ChannelTransactionParameters {
10581058
(13, channel_value_satoshis, option),
10591059
});
10601060

1061-
let channel_value_satoshis = channel_value_satoshis.unwrap_or(read_args);
1062-
if channel_value_satoshis != read_args {
1063-
return Err(DecodeError::InvalidValue);
1064-
}
1061+
let channel_value_satoshis = match read_args {
1062+
None => channel_value_satoshis.ok_or(DecodeError::InvalidValue)?,
1063+
Some(expected_value) => {
1064+
let channel_value_satoshis = channel_value_satoshis.unwrap_or(expected_value);
1065+
if channel_value_satoshis == expected_value {
1066+
channel_value_satoshis
1067+
} else {
1068+
return Err(DecodeError::InvalidValue);
1069+
}
1070+
},
1071+
};
10651072

10661073
let mut additional_features = ChannelTypeFeatures::empty();
10671074
additional_features.set_anchors_nonzero_fee_htlc_tx_required();

lightning/src/ln/channel.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1668,7 +1668,7 @@ impl_writeable_tlv_based!(FundingScope, {
16681668
(2, holder_selected_channel_reserve_satoshis, required),
16691669
(3, holder_max_commitment_tx_output, required),
16701670
(4, counterparty_max_commitment_tx_output, required),
1671-
(5, channel_transaction_parameters, (required: ReadableArgs, 0)), // FIXME: This won't work
1671+
(5, channel_transaction_parameters, (required: ReadableArgs, None)),
16721672
(6, funding_transaction, option),
16731673
});
16741674

@@ -1679,7 +1679,7 @@ impl_writeable_tlv_based!(FundingScope, {
16791679
(2, holder_selected_channel_reserve_satoshis, required),
16801680
(3, holder_max_commitment_tx_output, required),
16811681
(4, counterparty_max_commitment_tx_output, required),
1682-
(5, channel_transaction_parameters, (required: ReadableArgs, 0)),
1682+
(5, channel_transaction_parameters, (required: ReadableArgs, None)),
16831683
(6, funding_transaction, option),
16841684
(126, next_local_commitment_tx_fee_info_cached, required), // FIXME: This won't work
16851685
(127, next_remote_commitment_tx_fee_info_cached, required), // FIXME: This won't work
@@ -10795,7 +10795,7 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, &'c Channel
1079510795
_ => return Err(DecodeError::InvalidValue),
1079610796
};
1079710797

10798-
let mut channel_parameters: ChannelTransactionParameters = ReadableArgs::<u64>::read(reader, channel_value_satoshis)?;
10798+
let mut channel_parameters: ChannelTransactionParameters = ReadableArgs::<Option<u64>>::read(reader, Some(channel_value_satoshis))?;
1079910799
let funding_transaction: Option<Transaction> = Readable::read(reader)?;
1080010800

1080110801
let counterparty_cur_commitment_point = Readable::read(reader)?;

lightning/src/sign/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ impl_writeable_tlv_based!(DelayedPaymentOutputDescriptor, {
124124
(8, revocation_pubkey, required),
125125
(10, channel_keys_id, required),
126126
(12, channel_value_satoshis, required),
127-
(13, channel_transaction_parameters, (option: ReadableArgs, channel_value_satoshis.0.unwrap())),
127+
(13, channel_transaction_parameters, (option: ReadableArgs, channel_value_satoshis.0)),
128128
});
129129

130130
pub(crate) const P2WPKH_WITNESS_WEIGHT: u64 = 1 /* num stack items */ +
@@ -199,7 +199,7 @@ impl_writeable_tlv_based!(StaticPaymentOutputDescriptor, {
199199
(2, output, required),
200200
(4, channel_keys_id, required),
201201
(6, channel_value_satoshis, required),
202-
(7, channel_transaction_parameters, (option: ReadableArgs, channel_value_satoshis.0.unwrap())),
202+
(7, channel_transaction_parameters, (option: ReadableArgs, channel_value_satoshis.0)),
203203
});
204204

205205
/// Describes the necessary information to spend a spendable output.
@@ -559,7 +559,7 @@ pub struct ChannelDerivationParameters {
559559
impl_writeable_tlv_based!(ChannelDerivationParameters, {
560560
(0, value_satoshis, required),
561561
(2, keys_id, required),
562-
(4, transaction_parameters, (required: ReadableArgs, value_satoshis.0.unwrap())),
562+
(4, transaction_parameters, (required: ReadableArgs, value_satoshis.0)),
563563
});
564564

565565
/// A descriptor used to sign for a commitment transaction's HTLC output.

0 commit comments

Comments
 (0)