@@ -2611,6 +2611,8 @@ pub fn pass_claimed_payment_along_route<'a, 'b, 'c, 'd>(args: ClaimAlongRouteArg
26112611 } = args;
26122612 let claim_event = expected_paths[ 0 ] . last ( ) . unwrap ( ) . node . get_and_clear_pending_events ( ) ;
26132613 assert_eq ! ( claim_event. len( ) , 1 ) ;
2614+ #[ allow( unused) ]
2615+ let mut fwd_amt_msat = 0 ;
26142616 match claim_event[ 0 ] {
26152617 Event :: PaymentClaimed {
26162618 purpose : PaymentPurpose :: SpontaneousPayment ( preimage) ,
@@ -2627,6 +2629,7 @@ pub fn pass_claimed_payment_along_route<'a, 'b, 'c, 'd>(args: ClaimAlongRouteArg
26272629 assert_eq ! ( htlcs. len( ) , expected_paths. len( ) ) ; // One per path.
26282630 assert_eq ! ( htlcs. iter( ) . map( |h| h. value_msat) . sum:: <u64 >( ) , amount_msat) ;
26292631 expected_paths. iter ( ) . zip ( htlcs) . for_each ( |( path, htlc) | check_claimed_htlc_channel ( origin_node, path, htlc) ) ;
2632+ fwd_amt_msat = amount_msat;
26302633 } ,
26312634 Event :: PaymentClaimed {
26322635 purpose : PaymentPurpose :: InvoicePayment { .. } ,
@@ -2639,6 +2642,7 @@ pub fn pass_claimed_payment_along_route<'a, 'b, 'c, 'd>(args: ClaimAlongRouteArg
26392642 assert_eq ! ( htlcs. len( ) , expected_paths. len( ) ) ; // One per path.
26402643 assert_eq ! ( htlcs. iter( ) . map( |h| h. value_msat) . sum:: <u64 >( ) , amount_msat) ;
26412644 expected_paths. iter ( ) . zip ( htlcs) . for_each ( |( path, htlc) | check_claimed_htlc_channel ( origin_node, path, htlc) ) ;
2645+ fwd_amt_msat = amount_msat;
26422646 }
26432647 _ => panic ! ( ) ,
26442648 }
@@ -2698,19 +2702,25 @@ pub fn pass_claimed_payment_along_route<'a, 'b, 'c, 'd>(args: ClaimAlongRouteArg
26982702 {
26992703 $node. node. handle_update_fulfill_htlc( & $prev_node. node. get_our_node_id( ) , & next_msgs. as_ref( ) . unwrap( ) . 0 ) ;
27002704 let mut fee = {
2701- let per_peer_state = $node. node. per_peer_state. read( ) . unwrap( ) ;
2702- let peer_state = per_peer_state. get( & $prev_node. node. get_our_node_id( ) )
2703- . unwrap( ) . lock( ) . unwrap( ) ;
2704- let channel = peer_state. channel_by_id. get( & next_msgs. as_ref( ) . unwrap( ) . 0 . channel_id) . unwrap( ) ;
2705- if let Some ( prev_config) = channel. context( ) . prev_config( ) {
2706- prev_config. forwarding_fee_base_msat
2707- } else {
2708- channel. context( ) . config( ) . forwarding_fee_base_msat
2709- }
2705+ let ( base_fee, prop_fee) = {
2706+ let per_peer_state = $node. node. per_peer_state. read( ) . unwrap( ) ;
2707+ let peer_state = per_peer_state. get( & $prev_node. node. get_our_node_id( ) )
2708+ . unwrap( ) . lock( ) . unwrap( ) ;
2709+ let channel = peer_state. channel_by_id. get( & next_msgs. as_ref( ) . unwrap( ) . 0 . channel_id) . unwrap( ) ;
2710+ if let Some ( prev_config) = channel. context( ) . prev_config( ) {
2711+ ( prev_config. forwarding_fee_base_msat as u64 ,
2712+ prev_config. forwarding_fee_proportional_millionths as u64 )
2713+ } else {
2714+ ( channel. context( ) . config( ) . forwarding_fee_base_msat as u64 ,
2715+ channel. context( ) . config( ) . forwarding_fee_proportional_millionths as u64 )
2716+ }
2717+ } ;
2718+ ( fwd_amt_msat * prop_fee / 1_000_000 ) + base_fee
27102719 } ;
2711- if $idx == 1 { fee += expected_extra_fees[ i] ; }
2720+ if $idx == 1 { fee += expected_extra_fees[ i] as u64 ; }
27122721 expect_payment_forwarded!( * $node, $next_node, $prev_node, Some ( fee as u64 ) , false , false ) ;
27132722 expected_total_fee_msat += fee as u64 ;
2723+ fwd_amt_msat += fee as u64 ;
27142724 check_added_monitors!( $node, 1 ) ;
27152725 let new_next_msgs = if $new_msgs {
27162726 let events = $node. node. get_and_clear_pending_msg_events( ) ;
0 commit comments