X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fonion_route_tests.rs;h=a097e1d8a00db007159b135b068b1e50a1235406;hb=e1bfea302930f9821b693637f4d28629e949e0d9;hp=888ac7dca10e0f0291bda98403f8861499a2b20a;hpb=7e3de7044896dbc4d2838f87870c7c58f2c7c756;p=rust-lightning diff --git a/lightning/src/ln/onion_route_tests.rs b/lightning/src/ln/onion_route_tests.rs index 888ac7dc..a097e1d8 100644 --- a/lightning/src/ln/onion_route_tests.rs +++ b/lightning/src/ln/onion_route_tests.rs @@ -24,7 +24,7 @@ use crate::ln::features::{InitFeatures, Bolt11InvoiceFeatures}; use crate::ln::msgs; use crate::ln::msgs::{ChannelMessageHandler, ChannelUpdate}; use crate::ln::wire::Encode; -use crate::util::ser::{Writeable, Writer}; +use crate::util::ser::{Writeable, Writer, BigSize}; use crate::util::test_utils; use crate::util::config::{UserConfig, ChannelConfig, MaxDustHTLCExposure}; use crate::util::errors::APIError; @@ -673,11 +673,11 @@ fn do_test_onion_failure_stale_channel_update(announced_channel: bool) { config.accept_forwards_to_priv_channels = !announced_channel; config.channel_config.max_dust_htlc_exposure = MaxDustHTLCExposure::FeeRateMultiplier(5_000_000 / 253); let chanmon_cfgs = create_chanmon_cfgs(3); + let node_cfgs = create_node_cfgs(3, &chanmon_cfgs); let persister; let chain_monitor; - let channel_manager_1_deserialized; - let node_cfgs = create_node_cfgs(3, &chanmon_cfgs); let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, Some(config), None]); + let channel_manager_1_deserialized; let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs); let other_channel = create_chan_between_nodes( @@ -942,10 +942,16 @@ fn do_test_fail_htlc_backwards_with_reason(failure_code: FailureCode) { let mut htlc_msat_height_data = (payment_amount as u64).to_be_bytes().to_vec(); htlc_msat_height_data.extend_from_slice(&CHAN_CONFIRM_DEPTH.to_be_bytes()); htlc_msat_height_data + }, + FailureCode::InvalidOnionPayload(data) => { + match data { + Some((typ, offset)) => [BigSize(typ).encode(), offset.encode()].concat(), + None => Vec::new(), + } } }; - let failure_code = failure_code as u16; + let failure_code = failure_code.into(); let permanent_flag = 0x4000; let permanent_fail = (failure_code & permanent_flag) != 0; expect_payment_failed!(nodes[0], payment_hash, permanent_fail, failure_code, failure_data); @@ -957,6 +963,8 @@ fn test_fail_htlc_backwards_with_reason() { do_test_fail_htlc_backwards_with_reason(FailureCode::TemporaryNodeFailure); do_test_fail_htlc_backwards_with_reason(FailureCode::RequiredNodeFeatureMissing); do_test_fail_htlc_backwards_with_reason(FailureCode::IncorrectOrUnknownPaymentDetails); + do_test_fail_htlc_backwards_with_reason(FailureCode::InvalidOnionPayload(Some((1 << 16, 42)))); + do_test_fail_htlc_backwards_with_reason(FailureCode::InvalidOnionPayload(None)); } macro_rules! get_phantom_route {