Skip to content

Commit a267555

Browse files
committed
f: Remove user_custom_data wherever not required
1 parent df923c7 commit a267555

File tree

8 files changed

+48
-68
lines changed

8 files changed

+48
-68
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ pub enum PendingHTLCRouting {
209209
/// For HTLCs received by LDK, this will be exposed in
210210
/// [`Event::PaymentClaimable::onion_fields`] as
211211
/// [`RecipientOnionFields::user_custom_data`].
212-
user_custom_data: Vec<u8>,
212+
user_custom_data: Option<Vec<u8>>,
213213
/// Set if this HTLC is the final hop in a multi-hop blinded path.
214214
requires_blinded_error: bool,
215215
},
@@ -244,7 +244,7 @@ pub enum PendingHTLCRouting {
244244
///
245245
/// For HTLCs received by LDK, these will ultimately bubble back up as
246246
/// [`RecipientOnionFields::user_custom_data`].
247-
user_custom_data: Vec<u8>,
247+
user_custom_data: Option<Vec<u8>>,
248248
/// Set if this HTLC is the final hop in a multi-hop blinded path.
249249
requires_blinded_error: bool,
250250
/// Set if we are receiving a keysend to a blinded path, meaning we created the
@@ -10561,7 +10561,7 @@ where
1056110561
/// [`Router::create_blinded_payment_paths`].
1056210562
fn create_blinded_payment_paths(
1056310563
&self, amount_msats: Option<u64>, payment_secret: PaymentSecret, payment_context: PaymentContext,
10564-
relative_expiry_seconds: u32
10564+
relative_expiry_seconds: u32,
1056510565
) -> Result<Vec<BlindedPaymentPath>, ()> {
1056610566
let expanded_key = &self.inbound_payment_key;
1056710567
let entropy = &*self.entropy_source;
@@ -12465,7 +12465,7 @@ impl_writeable_tlv_based_enum!(PendingHTLCRouting,
1246512465
(5, sender_custom_tlvs, optional_vec),
1246612466
(7, requires_blinded_error, (default_value, false)),
1246712467
(9, payment_context, option),
12468-
(11, user_custom_data, optional_vec),
12468+
(11, user_custom_data, option),
1246912469
},
1247012470
(2, ReceiveKeysend) => {
1247112471
(0, payment_preimage, required),
@@ -12475,7 +12475,7 @@ impl_writeable_tlv_based_enum!(PendingHTLCRouting,
1247512475
(4, payment_data, option), // Added in 0.0.116
1247612476
(5, sender_custom_tlvs, optional_vec),
1247712477
(7, has_recipient_created_payment_secret, (default_value, false)),
12478-
(9, user_custom_data, optional_vec),
12478+
(9, user_custom_data, option),
1247912479
},
1248012480
);
1248112481

@@ -15483,7 +15483,7 @@ mod tests {
1548315483
payment_data: Some(msgs::FinalOnionHopData {
1548415484
payment_secret: PaymentSecret([0; 32]), total_msat: sender_intended_amt_msat,
1548515485
}),
15486-
sender_custom_tlvs: Vec::new(), user_custom_data: Vec::new(),
15486+
sender_custom_tlvs: Vec::new(),
1548715487
};
1548815488
// Check that if the amount we received + the penultimate hop extra fee is less than the sender
1548915489
// intended amount, we fail the payment.
@@ -15505,7 +15505,7 @@ mod tests {
1550515505
payment_data: Some(msgs::FinalOnionHopData {
1550615506
payment_secret: PaymentSecret([0; 32]), total_msat: sender_intended_amt_msat,
1550715507
}),
15508-
sender_custom_tlvs: Vec::new(), user_custom_data: Vec::new(),
15508+
sender_custom_tlvs: Vec::new(),
1550915509
};
1551015510
let current_height: u32 = node[0].node.best_block.read().unwrap().height;
1551115511
assert!(create_recv_pending_htlc_info(hop_data, [0; 32], PaymentHash([0; 32]),
@@ -15529,7 +15529,7 @@ mod tests {
1552915529
payment_data: Some(msgs::FinalOnionHopData {
1553015530
payment_secret: PaymentSecret([0; 32]), total_msat: 100,
1553115531
}),
15532-
sender_custom_tlvs: Vec::new(), user_custom_data: Vec::new(),
15532+
sender_custom_tlvs: Vec::new(),
1553315533
}, [0; 32], PaymentHash([0; 32]), 100, 23, None, true, None, current_height);
1553415534

1553515535
// Should not return an error as this condition:

lightning/src/ln/functional_test_utils.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2646,7 +2646,7 @@ pub struct PassAlongPathArgs<'a, 'b, 'c, 'd> {
26462646
pub expected_preimage: Option<PaymentPreimage>,
26472647
pub is_probe: bool,
26482648
pub sender_custom_tlvs: Vec<(u64, Vec<u8>)>,
2649-
pub user_custom_data: Vec<u8>,
2649+
pub user_custom_data: Option<Vec<u8>>,
26502650
pub payment_metadata: Option<Vec<u8>>,
26512651
pub expected_failure: Option<HTLCDestination>,
26522652
}
@@ -2659,7 +2659,7 @@ impl<'a, 'b, 'c, 'd> PassAlongPathArgs<'a, 'b, 'c, 'd> {
26592659
Self {
26602660
origin_node, expected_path, recv_value, payment_hash, payment_secret: None, event,
26612661
payment_claimable_expected: true, clear_recipient_events: true, expected_preimage: None,
2662-
is_probe: false, sender_custom_tlvs: Vec::new(), user_custom_data: Vec::new(), payment_metadata: None, expected_failure: None,
2662+
is_probe: false, sender_custom_tlvs: Vec::new(), user_custom_data: None, payment_metadata: None, expected_failure: None,
26632663
}
26642664
}
26652665
pub fn without_clearing_recipient_events(mut self) -> Self {
@@ -2857,7 +2857,7 @@ pub struct ClaimAlongRouteArgs<'a, 'b, 'c, 'd> {
28572857
pub skip_last: bool,
28582858
pub payment_preimage: PaymentPreimage,
28592859
pub sender_custom_tlvs: Vec<(u64, Vec<u8>)>,
2860-
pub user_custom_data: Vec<u8>,
2860+
pub user_custom_data: Option<Vec<u8>>,
28612861
// Allow forwarding nodes to have taken 1 msat more fee than expected based on the downstream
28622862
// fulfill amount.
28632863
//
@@ -2876,7 +2876,7 @@ impl<'a, 'b, 'c, 'd> ClaimAlongRouteArgs<'a, 'b, 'c, 'd> {
28762876
Self {
28772877
origin_node, expected_paths, expected_extra_fees: vec![0; expected_paths.len()],
28782878
expected_min_htlc_overpay: vec![0; expected_paths.len()], skip_last: false, payment_preimage,
2879-
allow_1_msat_fee_overpay: false, sender_custom_tlvs: vec![], user_custom_data: vec![]
2879+
allow_1_msat_fee_overpay: false, sender_custom_tlvs: vec![], user_custom_data: None,
28802880
}
28812881
}
28822882
pub fn skip_last(mut self, skip_last: bool) -> Self {
@@ -2900,7 +2900,7 @@ impl<'a, 'b, 'c, 'd> ClaimAlongRouteArgs<'a, 'b, 'c, 'd> {
29002900
self
29012901
}
29022902
pub fn with_user_custom_data(mut self, user_custom_data: Vec<u8>) -> Self {
2903-
self.user_custom_data = user_custom_data;
2903+
self.user_custom_data = Some(user_custom_data);
29042904
self
29052905
}
29062906
}

lightning/src/ln/max_payment_path_len_tests.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ fn large_payment_metadata() {
6161
payment_metadata: None,
6262
keysend_preimage: None,
6363
sender_custom_tlvs: &Vec::new(),
64-
user_custom_data: &Vec::new(),
6564
sender_intended_htlc_amt_msat: MIN_FINAL_VALUE_ESTIMATE_WITH_OVERPAY,
6665
cltv_expiry_height: nodes[0].best_block_info().1 + DEFAULT_MAX_TOTAL_CLTV_EXPIRY_DELTA,
6766
}.serialized_length();
@@ -78,7 +77,8 @@ fn large_payment_metadata() {
7877
let mut recipient_onion_max_md_size = RecipientOnionFields {
7978
payment_secret: Some(payment_secret),
8079
payment_metadata: Some(payment_metadata.clone()),
81-
sender_custom_tlvs: Vec::new(), user_custom_data: Vec::new(),
80+
sender_custom_tlvs: Vec::new(),
81+
user_custom_data: None,
8282
};
8383
nodes[0].node.send_payment(payment_hash, recipient_onion_max_md_size.clone(), PaymentId(payment_hash.0), route_0_1.route_params.clone().unwrap(), Retry::Attempts(0)).unwrap();
8484
check_added_monitors!(nodes[0], 1);
@@ -126,7 +126,8 @@ fn large_payment_metadata() {
126126
let mut recipient_onion_allows_2_hops = RecipientOnionFields {
127127
payment_secret: Some(payment_secret_2),
128128
payment_metadata: Some(vec![42; max_metadata_len - INTERMED_PAYLOAD_LEN_ESTIMATE]),
129-
sender_custom_tlvs: Vec::new(), user_custom_data: Vec::new(),
129+
sender_custom_tlvs: Vec::new(),
130+
user_custom_data: None,
130131
};
131132
let mut route_params_0_2 = route_0_2.route_params.clone().unwrap();
132133
route_params_0_2.payment_params.max_path_length = 2;
@@ -192,7 +193,6 @@ fn one_hop_blinded_path_with_custom_tlv() {
192193
keysend_preimage: None,
193194
invoice_request: None,
194195
sender_custom_tlvs: &Vec::new(),
195-
user_custom_data: &Vec::new()
196196
}.serialized_length();
197197
let max_custom_tlv_len = 1300
198198
- crate::util::ser::BigSize(CUSTOM_TLV_TYPE).serialized_length() // custom TLV type

lightning/src/ln/msgs.rs

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1771,7 +1771,6 @@ mod fuzzy_internal_msgs {
17711771
payment_metadata: Option<Vec<u8>>,
17721772
keysend_preimage: Option<PaymentPreimage>,
17731773
sender_custom_tlvs: Vec<(u64, Vec<u8>)>,
1774-
user_custom_data: Vec<u8>,
17751774
sender_intended_htlc_amt_msat: u64,
17761775
cltv_expiry_height: u32,
17771776
},
@@ -1793,7 +1792,7 @@ mod fuzzy_internal_msgs {
17931792
intro_node_blinding_point: Option<PublicKey>,
17941793
keysend_preimage: Option<PaymentPreimage>,
17951794
sender_custom_tlvs: Vec<(u64, Vec<u8>)>,
1796-
user_custom_data: Vec<u8>,
1795+
user_custom_data: Option<Vec<u8>>,
17971796
}
17981797
}
17991798

@@ -1816,7 +1815,6 @@ mod fuzzy_internal_msgs {
18161815
payment_metadata: Option<&'a Vec<u8>>,
18171816
keysend_preimage: Option<PaymentPreimage>,
18181817
sender_custom_tlvs: &'a Vec<(u64, Vec<u8>)>,
1819-
user_custom_data: &'a Vec<u8>,
18201818
sender_intended_htlc_amt_msat: u64,
18211819
cltv_expiry_height: u32,
18221820
},
@@ -1832,7 +1830,6 @@ mod fuzzy_internal_msgs {
18321830
intro_node_blinding_point: Option<PublicKey>, // Set if the introduction node of the blinded path is the final node
18331831
keysend_preimage: Option<PaymentPreimage>,
18341832
sender_custom_tlvs: &'a Vec<(u64, Vec<u8>)>,
1835-
user_custom_data: &'a Vec<u8>,
18361833
invoice_request: Option<&'a InvoiceRequest>,
18371834
}
18381835
}
@@ -1872,7 +1869,6 @@ mod fuzzy_internal_msgs {
18721869
intro_node_blinding_point: Option<PublicKey>, // Set if the introduction node of the blinded path is the final node
18731870
keysend_preimage: Option<PaymentPreimage>,
18741871
sender_custom_tlvs: &'a Vec<(u64, Vec<u8>)>,
1875-
user_custom_data: &'a Vec<u8>,
18761872
}
18771873
}
18781874

@@ -2745,21 +2741,20 @@ impl<'a> Writeable for OutboundOnionPayload<'a> {
27452741
},
27462742
Self::Receive {
27472743
ref payment_data, ref payment_metadata, ref keysend_preimage, sender_intended_htlc_amt_msat,
2748-
cltv_expiry_height, ref sender_custom_tlvs, ref user_custom_data
2744+
cltv_expiry_height, ref sender_custom_tlvs
27492745
} => {
27502746
// We need to update [`ln::outbound_payment::RecipientOnionFields::with_sender_custom_tlvs`]
27512747
// to reject any reserved types in the experimental range if new ones are ever
27522748
// standardized.
2753-
let user_custom_data = (!user_custom_data.is_empty()).then(|| (65539, user_custom_data.to_vec()));
27542749
let keysend_tlv = keysend_preimage.map(|preimage| (5482373484, preimage.encode()));
2755-
let mut custom_tlvs: Vec<&(u64, Vec<u8>)> = sender_custom_tlvs.iter().chain(keysend_tlv.iter()).chain(user_custom_data.iter()).collect();
2756-
custom_tlvs.sort_unstable_by_key(|(typ, _)| *typ);
2750+
let mut sender_custom_tlvs: Vec<&(u64, Vec<u8>)> = sender_custom_tlvs.iter().chain(keysend_tlv.iter()).collect();
2751+
sender_custom_tlvs.sort_unstable_by_key(|(typ, _)| *typ);
27572752
_encode_varint_length_prefixed_tlv!(w, {
27582753
(2, HighZeroBytesDroppedBigSize(*sender_intended_htlc_amt_msat), required),
27592754
(4, HighZeroBytesDroppedBigSize(*cltv_expiry_height), required),
27602755
(8, payment_data, option),
27612756
(16, payment_metadata.map(|m| WithoutLength(m)), option)
2762-
}, custom_tlvs.iter());
2757+
}, sender_custom_tlvs.iter());
27632758
},
27642759
Self::BlindedForward { encrypted_tlvs, intro_node_blinding_point } => {
27652760
_encode_varint_length_prefixed_tlv!(w, {
@@ -2769,27 +2764,25 @@ impl<'a> Writeable for OutboundOnionPayload<'a> {
27692764
},
27702765
Self::BlindedReceive {
27712766
sender_intended_htlc_amt_msat, total_msat, cltv_expiry_height, encrypted_tlvs,
2772-
intro_node_blinding_point, keysend_preimage, ref invoice_request, ref sender_custom_tlvs, ref user_custom_data
2767+
intro_node_blinding_point, keysend_preimage, ref invoice_request, ref sender_custom_tlvs
27732768
} => {
27742769
// We need to update [`ln::outbound_payment::RecipientOnionFields::with_sender_custom_tlvs`]
27752770
// to reject any reserved types in the experimental range if new ones are ever
27762771
// standardized.
2777-
let user_custom_data = (!user_custom_data.is_empty()).then(|| (65539, user_custom_data.to_vec()));
27782772
let invoice_request_tlv = invoice_request.map(|invreq| (77_777, invreq.encode())); // TODO: update TLV type once the async payments spec is merged
27792773
let keysend_tlv = keysend_preimage.map(|preimage| (5482373484, preimage.encode()));
2780-
let mut custom_tlvs: Vec<&(u64, Vec<u8>)> = sender_custom_tlvs.iter()
2781-
.chain(user_custom_data.iter())
2774+
let mut sender_custom_tlvs: Vec<&(u64, Vec<u8>)> = sender_custom_tlvs.iter()
27822775
.chain(invoice_request_tlv.iter())
27832776
.chain(keysend_tlv.iter())
27842777
.collect();
2785-
custom_tlvs.sort_unstable_by_key(|(typ, _)| *typ);
2778+
sender_custom_tlvs.sort_unstable_by_key(|(typ, _)| *typ);
27862779
_encode_varint_length_prefixed_tlv!(w, {
27872780
(2, HighZeroBytesDroppedBigSize(*sender_intended_htlc_amt_msat), required),
27882781
(4, HighZeroBytesDroppedBigSize(*cltv_expiry_height), required),
27892782
(10, **encrypted_tlvs, required_vec),
27902783
(12, intro_node_blinding_point, option),
27912784
(18, HighZeroBytesDroppedBigSize(*total_msat), required)
2792-
}, custom_tlvs.iter());
2785+
}, sender_custom_tlvs.iter());
27932786
},
27942787
}
27952788
Ok(())
@@ -2831,19 +2824,15 @@ impl<'a> Writeable for OutboundTrampolinePayload<'a> {
28312824
(12, intro_node_blinding_point, option)
28322825
});
28332826
},
2834-
Self::BlindedReceive { sender_intended_htlc_amt_msat, total_msat, cltv_expiry_height, encrypted_tlvs, intro_node_blinding_point, keysend_preimage, sender_custom_tlvs, user_custom_data} => {
2835-
let user_custom_data = (!user_custom_data.is_empty()).then(|| (65539, user_custom_data.to_vec()));
2836-
let custom_tlvs: Vec<&(u64, Vec<u8>)> = sender_custom_tlvs.iter()
2837-
.chain(user_custom_data.iter())
2838-
.collect();
2827+
Self::BlindedReceive { sender_intended_htlc_amt_msat, total_msat, cltv_expiry_height, encrypted_tlvs, intro_node_blinding_point, keysend_preimage, sender_custom_tlvs } => {
28392828
_encode_varint_length_prefixed_tlv!(w, {
28402829
(2, HighZeroBytesDroppedBigSize(*sender_intended_htlc_amt_msat), required),
28412830
(4, HighZeroBytesDroppedBigSize(*cltv_expiry_height), required),
28422831
(10, **encrypted_tlvs, required_vec),
28432832
(12, intro_node_blinding_point, option),
28442833
(18, HighZeroBytesDroppedBigSize(*total_msat), required),
28452834
(20, keysend_preimage, option)
2846-
}, custom_tlvs.iter());
2835+
}, sender_custom_tlvs.iter());
28472836
}
28482837
}
28492838
Ok(())
@@ -2941,7 +2930,7 @@ impl<NS: Deref> ReadableArgs<(Option<PublicKey>, NS)> for InboundOnionPayload wh
29412930
intro_node_blinding_point,
29422931
keysend_preimage,
29432932
sender_custom_tlvs,
2944-
user_custom_data: vec![],
2933+
user_custom_data: None,
29452934
})
29462935
},
29472936
}
@@ -2970,7 +2959,6 @@ impl<NS: Deref> ReadableArgs<(Option<PublicKey>, NS)> for InboundOnionPayload wh
29702959
sender_intended_htlc_amt_msat: amt.ok_or(DecodeError::InvalidValue)?,
29712960
cltv_expiry_height: cltv_value.ok_or(DecodeError::InvalidValue)?,
29722961
sender_custom_tlvs,
2973-
user_custom_data: vec![],
29742962
})
29752963
}
29762964
}
@@ -4582,7 +4570,6 @@ mod tests {
45824570
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
45834571
cltv_expiry_height: 0xffffffff,
45844572
sender_custom_tlvs: &vec![],
4585-
user_custom_data: &vec![],
45864573
};
45874574
let encoded_value = outbound_msg.encode();
45884575
let target_value = <Vec<u8>>::from_hex("1002080badf00d010203040404ffffffff").unwrap();
@@ -4611,7 +4598,6 @@ mod tests {
46114598
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
46124599
cltv_expiry_height: 0xffffffff,
46134600
sender_custom_tlvs: &vec![],
4614-
user_custom_data: &vec![],
46154601
};
46164602
let encoded_value = outbound_msg.encode();
46174603
let target_value = <Vec<u8>>::from_hex("3602080badf00d010203040404ffffffff082442424242424242424242424242424242424242424242424242424242424242421badca1f").unwrap();
@@ -4628,13 +4614,11 @@ mod tests {
46284614
payment_metadata: None,
46294615
keysend_preimage: None,
46304616
sender_custom_tlvs,
4631-
user_custom_data,
46324617
} = inbound_msg {
46334618
assert_eq!(payment_secret, expected_payment_secret);
46344619
assert_eq!(sender_intended_htlc_amt_msat, 0x0badf00d01020304);
46354620
assert_eq!(cltv_expiry_height, 0xffffffff);
46364621
assert_eq!(sender_custom_tlvs, vec![]);
4637-
assert_eq!(user_custom_data, vec![]);
46384622
} else { panic!(); }
46394623
}
46404624

@@ -4651,7 +4635,6 @@ mod tests {
46514635
payment_metadata: None,
46524636
keysend_preimage: None,
46534637
sender_custom_tlvs: &bad_type_range_tlvs,
4654-
user_custom_data: &vec![],
46554638
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
46564639
cltv_expiry_height: 0xffffffff,
46574640
};
@@ -4684,7 +4667,6 @@ mod tests {
46844667
payment_metadata: None,
46854668
keysend_preimage: None,
46864669
sender_custom_tlvs: &expected_sender_custom_tlvs,
4687-
user_custom_data: &vec![],
46884670
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
46894671
cltv_expiry_height: 0xffffffff,
46904672
};
@@ -4813,7 +4795,6 @@ mod tests {
48134795
intro_node_blinding_point: None,
48144796
keysend_preimage: None,
48154797
sender_custom_tlvs: &vec![],
4816-
user_custom_data: &vec![],
48174798
};
48184799
let eve_payload = trampoline_payload_eve.encode().to_lower_hex_string();
48194800
assert_eq!(eve_payload, "e4020408f0d18004030c35000ad1bcd747394fbd4d99588da075a623316e15a576df5bc785cccc7cd6ec7b398acce6faf520175f9ec920f2ef261cdb83dc28cc3a0eeb970107b3306489bf771ef5b1213bca811d345285405861d08a655b6c237fa247a8b4491beee20c878a60e9816492026d8feb9dafa84585b253978db6a0aa2945df5ef445c61e801fb82f43d5f00716baf9fc9b3de50bc22950a36bda8fc27bfb1242e5860c7e687438d4133e058770361a19b6c271a2a07788d34dccc27e39b9829b061a4d960eac4a2c2b0f4de506c24f9af3868c0aff6dda27281c120408f0d180");

lightning/src/ln/onion_payment.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,10 @@ pub(super) fn create_recv_pending_htlc_info(
138138
payment_metadata, payment_context, requires_blinded_error, has_recipient_created_payment_secret
139139
) = match hop_data {
140140
msgs::InboundOnionPayload::Receive {
141-
payment_data, keysend_preimage, sender_custom_tlvs, user_custom_data, sender_intended_htlc_amt_msat,
141+
payment_data, keysend_preimage, sender_custom_tlvs, sender_intended_htlc_amt_msat,
142142
cltv_expiry_height, payment_metadata, ..
143143
} =>
144-
(payment_data, keysend_preimage, sender_custom_tlvs, user_custom_data, sender_intended_htlc_amt_msat,
144+
(payment_data, keysend_preimage, sender_custom_tlvs, None, sender_intended_htlc_amt_msat,
145145
cltv_expiry_height, payment_metadata, None, false, keysend_preimage.is_none()),
146146
msgs::InboundOnionPayload::BlindedReceive {
147147
sender_intended_htlc_amt_msat, total_msat, cltv_expiry_height, payment_secret,

lightning/src/ln/onion_utils.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,6 @@ where
268268
keysend_preimage: *keysend_preimage,
269269
invoice_request,
270270
sender_custom_tlvs: &recipient_onion.sender_custom_tlvs,
271-
user_custom_data: &recipient_onion.user_custom_data,
272271
},
273272
);
274273
} else {
@@ -291,7 +290,6 @@ where
291290
payment_metadata: recipient_onion.payment_metadata.as_ref(),
292291
keysend_preimage: *keysend_preimage,
293292
sender_custom_tlvs: &recipient_onion.sender_custom_tlvs,
294-
user_custom_data: &recipient_onion.user_custom_data,
295293
sender_intended_htlc_amt_msat: value_msat,
296294
cltv_expiry_height: cltv,
297295
},

0 commit comments

Comments
 (0)