@@ -2204,14 +2204,22 @@ macro_rules! expect_payment_path_successful {
2204
2204
pub fn expect_payment_forwarded < CM : AChannelManager , H : NodeHolder < CM =CM > > (
2205
2205
event : Event , node : & H , prev_node : & H , next_node : & H , expected_fee : Option < u64 > ,
2206
2206
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 > {
2209
2209
match event {
2210
2210
Event :: PaymentForwarded {
2211
2211
total_fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id,
2212
2212
outbound_amount_forwarded_msat : _, skimmed_fee_msat
2213
2213
} => {
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
+ }
2215
2223
2216
2224
// Check that the (knowingly) withheld amount is always less or equal to the expected
2217
2225
// overpaid amount.
@@ -2226,6 +2234,7 @@ pub fn expect_payment_forwarded<CM: AChannelManager, H: NodeHolder<CM=CM>>(
2226
2234
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( ) ) ) ;
2227
2235
}
2228
2236
assert_eq ! ( claim_from_onchain_tx, downstream_force_closed) ;
2237
+ total_fee_earned_msat
2229
2238
} ,
2230
2239
_ => panic ! ( "Unexpected event" ) ,
2231
2240
}
@@ -2238,7 +2247,7 @@ macro_rules! expect_payment_forwarded {
2238
2247
assert_eq!( events. len( ) , 1 ) ;
2239
2248
$crate:: ln:: functional_test_utils:: expect_payment_forwarded(
2240
2249
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
2242
2251
) ;
2243
2252
}
2244
2253
}
@@ -2790,7 +2799,7 @@ pub fn pass_claimed_payment_along_route<'a, 'b, 'c, 'd>(args: ClaimAlongRouteArg
2790
2799
let mut events = $node. node. get_and_clear_pending_events( ) ;
2791
2800
assert_eq!( events. len( ) , 1 ) ;
2792
2801
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 ) ;
2794
2803
expected_total_fee_msat += fee as u64 ;
2795
2804
fwd_amt_msat += fee as u64 ;
2796
2805
check_added_monitors!( $node, 1 ) ;
0 commit comments