Skip to content

Commit 85c7d76

Browse files
committed
Calculate Trampoline onion packet sizes dynamically.
1 parent 66fb520 commit 85c7d76

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

lightning/src/ln/onion_utils.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -418,12 +418,20 @@ pub(super) fn construct_onion_packet(
418418
#[allow(unused)]
419419
pub(super) fn construct_trampoline_onion_packet(
420420
payloads: Vec<msgs::OutboundTrampolinePayload>, onion_keys: Vec<OnionKeys>,
421-
prng_seed: [u8; 32], associated_data: &PaymentHash, length: u16,
421+
prng_seed: [u8; 32], associated_data: &PaymentHash,
422422
) -> Result<msgs::TrampolineOnionPacket, ()> {
423-
let mut packet_data = vec![0u8; length as usize];
423+
let packet_length: usize = payloads
424+
.iter()
425+
.map(|p| {
426+
let mut payload_len = LengthCalculatingWriter(0);
427+
p.write(&mut payload_len).expect("Failed to calculate length");
428+
payload_len.0 + 32
429+
})
430+
.sum();
424431

432+
let mut packet_data = vec![0u8; packet_length];
425433
let mut chacha = ChaCha20::new(&prng_seed, &[0; 8]);
426-
chacha.process(&vec![0u8; length as usize], &mut packet_data);
434+
chacha.process(&vec![0u8; packet_length], &mut packet_data);
427435

428436
construct_onion_packet_with_init_noise::<_, _>(
429437
payloads,

0 commit comments

Comments
 (0)