@@ -2204,14 +2204,22 @@ macro_rules! expect_payment_path_successful {
22042204pub  fn  expect_payment_forwarded < CM :  AChannelManager ,  H :  NodeHolder < CM =CM > > ( 
22052205	event :  Event ,  node :  & H ,  prev_node :  & H ,  next_node :  & H ,  expected_fee :  Option < u64 > , 
22062206	expected_extra_fees_msat :  Option < u64 > ,  upstream_force_closed :  bool , 
2207- 	downstream_force_closed :  bool 
2208- )  { 
2207+ 	downstream_force_closed :  bool ,   allow_1_msat_fee_overpay :   bool , 
2208+ )  ->  Option < u64 >   { 
22092209	match  event { 
22102210		Event :: PaymentForwarded  { 
22112211			total_fee_earned_msat,  prev_channel_id,  claim_from_onchain_tx,  next_channel_id, 
22122212			outbound_amount_forwarded_msat :  _,  skimmed_fee_msat
22132213		}  => { 
2214- 			assert_eq ! ( total_fee_earned_msat,  expected_fee) ; 
2214+ 			if  allow_1_msat_fee_overpay { 
2215+ 				// Aggregating fees for blinded paths may result in a rounding error, causing slight 
2216+ 				// overpayment in fees. 
2217+ 				let  actual_fee = total_fee_earned_msat. unwrap ( ) ; 
2218+ 				let  expected_fee = expected_fee. unwrap ( ) ; 
2219+ 				assert ! ( actual_fee == expected_fee || actual_fee == expected_fee + 1 ) ; 
2220+ 			}  else  { 
2221+ 				assert_eq ! ( total_fee_earned_msat,  expected_fee) ; 
2222+ 			} 
22152223
22162224			// Check that the (knowingly) withheld amount is always less or equal to the expected 
22172225			// overpaid amount. 
@@ -2226,6 +2234,7 @@ pub fn expect_payment_forwarded<CM: AChannelManager, H: NodeHolder<CM=CM>>(
22262234				assert ! ( node. node( ) . list_channels( ) . iter( ) . any( |x| x. counterparty. node_id == next_node. node( ) . get_our_node_id( )  && x. channel_id == next_channel_id. unwrap( ) ) ) ; 
22272235			} 
22282236			assert_eq ! ( claim_from_onchain_tx,  downstream_force_closed) ; 
2237+ 			total_fee_earned_msat
22292238		} , 
22302239		_ => panic ! ( "Unexpected event" ) , 
22312240	} 
@@ -2238,7 +2247,7 @@ macro_rules! expect_payment_forwarded {
22382247		assert_eq!( events. len( ) ,  1 ) ; 
22392248		$crate:: ln:: functional_test_utils:: expect_payment_forwarded( 
22402249			events. pop( ) . unwrap( ) ,  & $node,  & $prev_node,  & $next_node,  $expected_fee,  None , 
2241- 			$upstream_force_closed,  $downstream_force_closed
2250+ 			$upstream_force_closed,  $downstream_force_closed,   false 
22422251		) ; 
22432252	} 
22442253} 
@@ -2790,7 +2799,7 @@ pub fn pass_claimed_payment_along_route<'a, 'b, 'c, 'd>(args: ClaimAlongRouteArg
27902799					let  mut  events = $node. node. get_and_clear_pending_events( ) ; 
27912800					assert_eq!( events. len( ) ,  1 ) ; 
27922801					expect_payment_forwarded( events. pop( ) . unwrap( ) ,  * $node,  $next_node,  $prev_node, 
2793- 						Some ( fee as  u64 ) ,  expected_extra_fee,  false ,  false ) ; 
2802+ 						Some ( fee as  u64 ) ,  expected_extra_fee,  false ,  false ,   false ) ; 
27942803					expected_total_fee_msat += fee as  u64 ; 
27952804					fwd_amt_msat += fee as  u64 ; 
27962805					check_added_monitors!( $node,  1 ) ; 
0 commit comments