Skip to content

Commit e763184

Browse files
committed
Move Trampoline data to separate enum variant on OutboundOnionPayload.
1 parent c4fda75 commit e763184

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

lightning/src/ln/msgs.rs

+23-15
Original file line numberDiff line numberDiff line change
@@ -1698,14 +1698,19 @@ mod fuzzy_internal_msgs {
16981698
amt_to_forward: u64,
16991699
outgoing_cltv_value: u32,
17001700
},
1701+
TrampolineEntry {
1702+
amt_to_forward: u64,
1703+
outgoing_cltv_value: u32,
1704+
payment_data: Option<FinalOnionHopData>,
1705+
trampoline_packet: crate::onion_message::packet::Packet
1706+
},
17011707
Receive {
17021708
payment_data: Option<FinalOnionHopData>,
17031709
payment_metadata: Option<Vec<u8>>,
17041710
keysend_preimage: Option<PaymentPreimage>,
17051711
custom_tlvs: Vec<(u64, Vec<u8>)>,
17061712
sender_intended_htlc_amt_msat: u64,
17071713
cltv_expiry_height: u32,
1708-
trampoline_packet: Option<crate::onion_message::packet::Packet>
17091714
},
17101715
BlindedForward {
17111716
encrypted_tlvs: Vec<u8>,
@@ -2479,9 +2484,20 @@ impl Writeable for OutboundOnionPayload {
24792484
(6, short_channel_id, required)
24802485
});
24812486
},
2487+
Self::TrampolineEntry {
2488+
amt_to_forward, outgoing_cltv_value, ref payment_data,
2489+
ref trampoline_packet
2490+
} => {
2491+
_encode_varint_length_prefixed_tlv!(w, {
2492+
(2, HighZeroBytesDroppedBigSize(*amt_to_forward), required),
2493+
(4, HighZeroBytesDroppedBigSize(*outgoing_cltv_value), required),
2494+
(8, payment_data, option),
2495+
(20, trampoline_packet, required)
2496+
});
2497+
},
24822498
Self::Receive {
24832499
ref payment_data, ref payment_metadata, ref keysend_preimage, sender_intended_htlc_amt_msat,
2484-
cltv_expiry_height, ref trampoline_packet, ref custom_tlvs,
2500+
cltv_expiry_height, ref custom_tlvs,
24852501
} => {
24862502
// We need to update [`ln::outbound_payment::RecipientOnionFields::with_custom_tlvs`]
24872503
// to reject any reserved types in the experimental range if new ones are ever
@@ -2495,8 +2511,7 @@ impl Writeable for OutboundOnionPayload {
24952511
(2, HighZeroBytesDroppedBigSize(*sender_intended_htlc_amt_msat), required),
24962512
(4, HighZeroBytesDroppedBigSize(*cltv_expiry_height), required),
24972513
(8, payment_data, option),
2498-
(16, payment_metadata.as_ref().map(|m| WithoutLength(m)), option),
2499-
(20, trampoline_packet, option)
2514+
(16, payment_metadata.as_ref().map(|m| WithoutLength(m)), option)
25002515
}, custom_tlvs.iter());
25012516
},
25022517
Self::BlindedForward { encrypted_tlvs, intro_node_blinding_point } => {
@@ -4223,7 +4238,6 @@ mod tests {
42234238
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
42244239
cltv_expiry_height: 0xffffffff,
42254240
custom_tlvs: vec![],
4226-
trampoline_packet: None
42274241
};
42284242
let encoded_value = outbound_msg.encode();
42294243
let target_value = <Vec<u8>>::from_hex("1002080badf00d010203040404ffffffff").unwrap();
@@ -4252,7 +4266,6 @@ mod tests {
42524266
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
42534267
cltv_expiry_height: 0xffffffff,
42544268
custom_tlvs: vec![],
4255-
trampoline_packet: None
42564269
};
42574270
let encoded_value = outbound_msg.encode();
42584271
let target_value = <Vec<u8>>::from_hex("3602080badf00d010203040404ffffffff082442424242424242424242424242424242424242424242424242424242424242421badca1f").unwrap();
@@ -4292,7 +4305,6 @@ mod tests {
42924305
custom_tlvs: bad_type_range_tlvs,
42934306
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
42944307
cltv_expiry_height: 0xffffffff,
4295-
trampoline_packet: None
42964308
};
42974309
let encoded_value = msg.encode();
42984310
let node_signer = test_utils::TestKeysInterface::new(&[42; 32], Network::Testnet);
@@ -4325,7 +4337,6 @@ mod tests {
43254337
custom_tlvs: expected_custom_tlvs.clone(),
43264338
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
43274339
cltv_expiry_height: 0xffffffff,
4328-
trampoline_packet: None
43294340
};
43304341
let encoded_value = msg.encode();
43314342
let target_value = <Vec<u8>>::from_hex("2e02080badf00d010203040404ffffffffff0000000146c6616b021234ff0000000146c6616f084242424242424242").unwrap();
@@ -4364,14 +4375,11 @@ mod tests {
43644375
let encoded_trampoline_packet = trampoline_packet.encode();
43654376
assert_eq!(encoded_trampoline_packet.len(), 716);
43664377

4367-
let msg = msgs::OutboundOnionPayload::Receive {
4378+
let msg = msgs::OutboundOnionPayload::TrampolineEntry {
43684379
payment_data: None,
4369-
payment_metadata: None,
4370-
keysend_preimage: None,
4371-
custom_tlvs: Vec::new(),
4372-
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
4373-
cltv_expiry_height: 0xffffffff,
4374-
trampoline_packet: Some(trampoline_packet),
4380+
amt_to_forward: 0x0badf00d01020304,
4381+
outgoing_cltv_value: 0xffffffff,
4382+
trampoline_packet,
43754383
};
43764384
let encoded_payload = msg.encode();
43774385

lightning/src/ln/onion_utils.rs

-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,6 @@ pub(super) fn build_onion_payloads(
233233
custom_tlvs: recipient_onion.custom_tlvs.clone(),
234234
sender_intended_htlc_amt_msat: value_msat,
235235
cltv_expiry_height: cltv,
236-
trampoline_packet: None,
237236
});
238237
}
239238
} else {

0 commit comments

Comments
 (0)