@@ -7187,29 +7187,23 @@ fn test_channel_failed_after_message_with_badonion_node_perm_bits_set() {
71877187 let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
71887188 let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
71897189 let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
7190- create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 1000000,
7191- InitFeatures::known(), InitFeatures::known());
7192- let chan_2 = create_announced_chan_between_nodes_with_value(&nodes, 1, 2, 1000000, 1000000,
7193- InitFeatures::known(), InitFeatures::known());
7190+ create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
7191+ let chan_2 = create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
71947192
7195- let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 100000 );
7193+ let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 100_000 );
71967194
71977195 // First hop
71987196 let mut payment_event = {
71997197 nodes[0].node.send_payment(&route, our_payment_hash, &Some(our_payment_secret)).unwrap();
72007198 check_added_monitors!(nodes[0], 1);
7201- let mut events = nodes[0].node.get_and_clear_pending_msg_events();
7202- assert_eq!(events.len(), 1);
7203- SendEvent::from_event(events.remove(0))
7199+ SendEvent::from_node(&nodes[0])
72047200 };
7201+
72057202 nodes[1].node.handle_update_add_htlc(&nodes[0].node.get_our_node_id(), &payment_event.msgs[0]);
7206- check_added_monitors!(nodes[1], 0);
72077203 commitment_signed_dance!(nodes[1], nodes[0], payment_event.commitment_msg, false);
72087204 expect_pending_htlcs_forwardable!(nodes[1]);
7209- let mut events_2 = nodes[1].node.get_and_clear_pending_msg_events();
7210- assert_eq!(events_2.len(), 1);
72117205 check_added_monitors!(nodes[1], 1);
7212- payment_event = SendEvent::from_event(events_2.remove(0) );
7206+ payment_event = SendEvent::from_node(&nodes[1] );
72137207 assert_eq!(payment_event.msgs.len(), 1);
72147208
72157209 // Second Hop
@@ -7220,54 +7214,45 @@ fn test_channel_failed_after_message_with_badonion_node_perm_bits_set() {
72207214
72217215 let events_3 = nodes[2].node.get_and_clear_pending_msg_events();
72227216 assert_eq!(events_3.len(), 1);
7223- let update_msg : (msgs::UpdateFailMalformedHTLC, msgs::CommitmentSigned) = {
7224- match events_3[0] {
7225- MessageSendEvent::UpdateHTLCs { node_id: _ , updates: msgs::CommitmentUpdate {
7226- ref update_fail_malformed_htlcs, ref commitment_signed, .. } } => {
7227- let mut update_msg = update_fail_malformed_htlcs[0].clone();
7228- // Set the NODE bit (BADONION and PERM already set in invalid_onion_version error)
7229- update_msg.failure_code = update_msg.failure_code|0x2000;
7230- (update_msg, commitment_signed.clone())
7231- },
7232- _ => panic!("Unexpected event"),
7233- }
7234- };
7235-
7236- nodes[1].node.handle_update_fail_malformed_htlc(&nodes[2].node.get_our_node_id(), &update_msg.0);
7217+ match events_3[0] {
7218+ MessageSendEvent::UpdateHTLCs { updates, .. } => {
7219+ let mut update_msg = updates.update_fail_malformed_htlcs[0].clone();
7220+ // Set the NODE bit (BADONION and PERM already set in invalid_onion_version error)
7221+ update_msg.failure_code |= 0x2000;
7222+
7223+ nodes[1].node.handle_update_fail_malformed_htlc(&nodes[2].node.get_our_node_id(), &update_msg);
7224+ commitment_signed_dance!(nodes[1], nodes[2], updates.commitment_signed, false, true);
7225+ },
7226+ _ => panic!("Unexpected event"),
7227+ }
72377228
7238- check_added_monitors!(nodes[1], 0);
7239- commitment_signed_dance!(nodes[1], nodes[2], update_msg.1, false, true);
72407229 expect_pending_htlcs_forwardable_and_htlc_handling_failed!(nodes[1],
72417230 vec![HTLCDestination::NextHopChannel {
72427231 node_id: Some(nodes[2].node.get_our_node_id()), channel_id: chan_2.2 }]);
72437232 let events_4 = nodes[1].node.get_and_clear_pending_msg_events();
72447233 assert_eq!(events_4.len(), 1);
72457234 check_added_monitors!(nodes[1], 1);
72467235
7247- let update_msg: (msgs::UpdateFailHTLC, msgs::CommitmentSigned) = {
7248- match events_4[0] {
7249- MessageSendEvent::UpdateHTLCs { node_id: _ , updates: msgs::CommitmentUpdate {
7250- ref update_fail_htlcs, ref commitment_signed, .. } } => {
7251- (update_fail_htlcs[0].clone(), commitment_signed.clone())
7252- },
7253- _ => panic!("Unexpected event"),
7254- }
7255- };
7256-
7257- nodes[0].node.handle_update_fail_htlc(&nodes[1].node.get_our_node_id(), &update_msg.0);
7236+ match events_4[0] {
7237+ MessageSendEvent::UpdateHTLCs { updates, .. } => {
7238+ nodes[0].node.handle_update_fail_htlc(&nodes[1].node.get_our_node_id(), &updates.update_fail_htlcs[0]);
7239+ commitment_signed_dance!(nodes[0], nodes[1], updates.commitment_signed, false, true);
7240+ },
7241+ _ => panic!("Unexpected event"),
7242+ }
72587243
7259- check_added_monitors!(nodes[0], 0);
7260- commitment_signed_dance!(nodes[0], nodes[1], update_msg.1, false, true);
72617244 let events_5 = nodes[0].node.get_and_clear_pending_events();
72627245 assert_eq!(events_5.len(), 1);
72637246
72647247 // Expect a PaymentPathFailed event with a ChannelFailure network update for the channel between
72657248 // the node originating the error to its next hop.
72667249 match events_5[0] {
7267- Event::PaymentPathFailed { network_update: Some(NetworkUpdate::ChannelFailure {
7268- short_channel_id, is_permanent }), .. } => {
7250+ Event::PaymentPathFailed { network_update:
7251+ Some(NetworkUpdate::ChannelFailure { short_channel_id, is_permanent }), error_code, ..
7252+ } => {
72697253 assert_eq!(short_channel_id, chan_2.0.contents.short_channel_id);
72707254 assert!(is_permanent);
7255+ assert_eq!(error_code, Some(0x8000|0x4000|0x2000|4));
72717256 },
72727257 _ => panic!("Unexpected event"),
72737258 }
0 commit comments