fn we_are_intro_node() {
// If we are sending straight to a blinded route and we are the introduction node, we need to
// advance the blinded route by 1 hop so the second hop is the new introduction node.
- let nodes = create_nodes(3);
+ let mut nodes = create_nodes(3);
let test_msg = TestCustomMessage {};
let secp_ctx = Secp256k1::new();
nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), OnionMessageContents::Custom(test_msg.clone()), None).unwrap();
pass_along_path(&nodes, None);
+
+ // Try with a two-hop blinded route where we are the introduction node.
+ let blinded_route = BlindedRoute::new(&[nodes[0].get_node_pk(), nodes[1].get_node_pk()], &*nodes[1].keys_manager, &secp_ctx).unwrap();
+ nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), OnionMessageContents::Custom(test_msg), None).unwrap();
+ nodes.remove(2);
+ pass_along_path(&nodes, None);
}
#[test]
next_blinding_override: Some(blinding_pt),
})), control_tlvs_ss));
}
- if let Some(encrypted_payload) = enc_payload_opt {
- payloads.push((Payload::Forward(ForwardControlTlvs::Blinded(encrypted_payload)),
- control_tlvs_ss));
- } else { debug_assert!(false); }
- blinded_path_idx += 1;
- } else if blinded_path_idx < num_blinded_hops - 1 && enc_payload_opt.is_some() {
+ }
+ if blinded_path_idx < num_blinded_hops.saturating_sub(1) && enc_payload_opt.is_some() {
payloads.push((Payload::Forward(ForwardControlTlvs::Blinded(enc_payload_opt.unwrap())),
control_tlvs_ss));
blinded_path_idx += 1;