@@ -1328,13 +1328,13 @@ macro_rules! expect_payment_path_successful {
13281328}
13291329
13301330macro_rules! expect_payment_forwarded {
1331- ( $node: expr, $channel_id: expr, $expected_fee: expr, $upstream_force_closed: expr) => {
1331+ ( $node: expr, $source_node : expr , $ channel_id: expr, $expected_fee: expr, $upstream_force_closed: expr) => {
13321332 let events = $node. node. get_and_clear_pending_events( ) ;
13331333 assert_eq!( events. len( ) , 1 ) ;
13341334 match events[ 0 ] {
13351335 Event :: PaymentForwarded { source_node_id, channel_id, fee_earned_msat, claim_from_onchain_tx } => {
1336- assert_eq!( source_node_id, $node . node. get_our_node_id( ) ) ;
1337- // assert_eq!(channel_id, $channel_id);
1336+ assert_eq!( source_node_id, $source_node . node. get_our_node_id( ) ) ;
1337+ assert_eq!( channel_id, $channel_id) ;
13381338 assert_eq!( fee_earned_msat, $expected_fee) ;
13391339 assert_eq!( claim_from_onchain_tx, $upstream_force_closed) ;
13401340 } ,
@@ -1575,12 +1575,11 @@ pub fn do_claim_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>,
15751575 }
15761576 }
15771577 macro_rules! mid_update_fulfill_dance {
1578- ( $node: expr, $prev_node: expr, $next_channel_id: expr, $new_msgs: expr) => {
1578+ ( $node: expr, $prev_node: expr, $next_node : expr , $ next_channel_id: expr, $new_msgs: expr) => {
15791579 {
1580- // TODO channel_id is not correct. Causes tests to fail.
15811580 $node. node. handle_update_fulfill_htlc( & $prev_node. node. get_our_node_id( ) , & next_msgs. as_ref( ) . unwrap( ) . 0 ) ;
15821581 let fee = $node. node. channel_state. lock( ) . unwrap( ) . by_id. get( & next_msgs. as_ref( ) . unwrap( ) . 0 . channel_id) . unwrap( ) . config. forwarding_fee_base_msat;
1583- expect_payment_forwarded!( $node, $next_channel_id, Some ( fee as u64 ) , false ) ;
1582+ expect_payment_forwarded!( $node, $next_node , $ next_channel_id, Some ( fee as u64 ) , false ) ;
15841583 expected_total_fee_msat += fee as u64 ;
15851584 check_added_monitors!( $node, 1 ) ;
15861585 let new_next_msgs = if $new_msgs {
@@ -1599,23 +1598,23 @@ pub fn do_claim_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>,
15991598 }
16001599 }
16011600
1602- // [1, 2, 3, 4, 5, 6]
1603- // prev_node = 6
1604- // len = 6
1605- // [6, 5, 4, 3, 2, 1] (1 = 5) (need to get node 4 => idx = 1 => need to get index 3 => len-1-idx-1
1606- // [6, 5, 4, 3, 2, 1] (2 = 4) (need to get node 3 => idx = 2 => need to get index 2 => len-1-idx-1
1607- // [6, 5, 4, 3, 2, 1] (3 = 3) (need to get node 3 => idx = 3 => len-1-idx => need to index 1 => len-1-idx-1
16081601 let mut prev_node = expected_route. last ( ) . unwrap ( ) ;
1609- let mut prev_channel_id = match prev_node. node . list_usable_channels ( ) . iter ( ) . find ( |& x| x. counterparty . node_id == expected_next_node) {
1610- Some ( channel) => channel. channel_id ,
1611- None => panic ! ( "Coudn't find channel" )
1612- } ;
1613-
16141602 for ( idx, node) in expected_route. iter ( ) . rev ( ) . enumerate ( ) . skip ( 1 ) {
16151603 assert_eq ! ( expected_next_node, node. node. get_our_node_id( ) ) ;
16161604 let update_next_msgs = !skip_last || idx != expected_route. len ( ) - 1 ;
16171605 if next_msgs. is_some ( ) {
1618- mid_update_fulfill_dance ! ( node, prev_node, prev_channel_id, update_next_msgs) ;
1606+ // Since we are traversing in reverse, next_node is actually the previous node
1607+ let next_node: & Node ;
1608+ if idx == expected_route. len ( ) - 1 {
1609+ next_node = origin_node;
1610+ } else {
1611+ next_node = expected_route[ idx - 1 ] ;
1612+ }
1613+ let next_channel_id = match node. node . list_usable_channels ( ) . iter ( ) . find ( |& x| x. counterparty . node_id == next_node. node . get_our_node_id ( ) ) {
1614+ Some ( channel) => channel. channel_id ,
1615+ None => panic ! ( "Uh oh! Coudn't find the channel" )
1616+ } ;
1617+ mid_update_fulfill_dance ! ( node, prev_node, next_node, next_channel_id, update_next_msgs) ;
16191618 } else {
16201619 assert ! ( !update_next_msgs) ;
16211620 assert ! ( node. node. get_and_clear_pending_msg_events( ) . is_empty( ) ) ;
@@ -1624,10 +1623,6 @@ pub fn do_claim_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>,
16241623 assert_eq ! ( expected_next_node, origin_node. node. get_our_node_id( ) ) ;
16251624 }
16261625
1627- prev_channel_id = match node. node . list_usable_channels ( ) . iter ( ) . find ( |& x| x. counterparty . node_id == prev_node. node . get_our_node_id ( ) ) {
1628- Some ( channel) => channel. channel_id ,
1629- None => panic ! ( "Couldn't find channel" )
1630- } ;
16311626 prev_node = node;
16321627 }
16331628
0 commit comments