@@ -2148,14 +2148,21 @@ macro_rules! expect_payment_path_successful {
21482148
21492149pub fn expect_payment_forwarded < CM : AChannelManager , H : NodeHolder < CM =CM > > (
21502150 event : Event , node : & H , prev_node : & H , next_node : & H , expected_fee : Option < u64 > ,
2151- upstream_force_closed : bool , downstream_force_closed : bool
2152- ) {
2151+ upstream_force_closed : bool , downstream_force_closed : bool , allow_1_msat_fee_overpay : bool ,
2152+ ) -> Option < u64 > {
21532153 match event {
21542154 Event :: PaymentForwarded {
21552155 fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id,
21562156 outbound_amount_forwarded_msat : _
21572157 } => {
2158- assert_eq ! ( fee_earned_msat, expected_fee) ;
2158+ if allow_1_msat_fee_overpay {
2159+ // Aggregating fees for blinded paths may result in a rounding error, causing slight
2160+ // overpayment in fees.
2161+ assert ! ( fee_earned_msat. unwrap( ) == expected_fee. unwrap( )
2162+ || fee_earned_msat. unwrap( ) == expected_fee. unwrap( ) + 1 ) ;
2163+ } else {
2164+ assert_eq ! ( fee_earned_msat, expected_fee) ;
2165+ }
21592166 if !upstream_force_closed {
21602167 // Is the event prev_channel_id in one of the channels between the two nodes?
21612168 assert ! ( node. node( ) . list_channels( ) . iter( ) . any( |x| x. counterparty. node_id == prev_node. node( ) . get_our_node_id( ) && x. channel_id == prev_channel_id. unwrap( ) ) ) ;
@@ -2166,6 +2173,7 @@ pub fn expect_payment_forwarded<CM: AChannelManager, H: NodeHolder<CM=CM>>(
21662173 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( ) ) ) ;
21672174 }
21682175 assert_eq ! ( claim_from_onchain_tx, downstream_force_closed) ;
2176+ fee_earned_msat
21692177 } ,
21702178 _ => panic ! ( "Unexpected event" ) ,
21712179 }
@@ -2177,7 +2185,7 @@ macro_rules! expect_payment_forwarded {
21772185 assert_eq!( events. len( ) , 1 ) ;
21782186 $crate:: ln:: functional_test_utils:: expect_payment_forwarded(
21792187 events. pop( ) . unwrap( ) , & $node, & $prev_node, & $next_node, $expected_fee,
2180- $upstream_force_closed, $downstream_force_closed) ;
2188+ $upstream_force_closed, $downstream_force_closed, false ) ;
21812189 }
21822190}
21832191
0 commit comments