@@ -15,6 +15,7 @@ use chain::{ChannelMonitorUpdateErr, Confirm, Listen, Watch};
15
15
use chain:: channelmonitor:: { ANTI_REORG_DELAY , ChannelMonitor , LATENCY_GRACE_PERIOD_BLOCKS } ;
16
16
use chain:: transaction:: OutPoint ;
17
17
use chain:: keysinterface:: KeysInterface ;
18
+ use ln:: channel:: EXPIRE_PREV_CONFIG_TICKS ;
18
19
use ln:: channelmanager:: { BREAKDOWN_TIMEOUT , ChannelManager , ChannelManagerReadArgs , MPP_TIMEOUT_TICKS , PaymentId , PaymentSendFailure } ;
19
20
use ln:: features:: { InitFeatures , InvoiceFeatures } ;
20
21
use ln:: msgs;
@@ -531,9 +532,19 @@ fn do_retry_with_no_persist(confirm_before_reload: bool) {
531
532
// Update the fee on the middle hop to ensure PaymentSent events have the correct (retried) fee
532
533
// and not the original fee. We also update node[1]'s relevant config as
533
534
// do_claim_payment_along_route expects us to never overpay.
534
- nodes[ 1 ] . node . channel_state . lock ( ) . unwrap ( ) . by_id . get_mut ( & chan_id_2) . unwrap ( )
535
- . config . options . forwarding_fee_base_msat += 100_000 ;
536
- new_route. paths [ 0 ] [ 0 ] . fee_msat += 100_000 ;
535
+ {
536
+ let mut channel_state = nodes[ 1 ] . node . channel_state . lock ( ) . unwrap ( ) ;
537
+ let mut channel = channel_state. by_id . get_mut ( & chan_id_2) . unwrap ( ) ;
538
+ let mut new_config = channel. config ( ) ;
539
+ new_config. forwarding_fee_base_msat += 100_000 ;
540
+ channel. update_config ( & new_config) ;
541
+ new_route. paths [ 0 ] [ 0 ] . fee_msat += 100_000 ;
542
+ }
543
+
544
+ // Force expiration of the channel's previous config.
545
+ for _ in 0 ..EXPIRE_PREV_CONFIG_TICKS {
546
+ nodes[ 1 ] . node . timer_tick_occurred ( ) ;
547
+ }
537
548
538
549
assert ! ( nodes[ 0 ] . node. retry_payment( & new_route, payment_id_1) . is_err( ) ) ; // Shouldn't be allowed to retry a fulfilled payment
539
550
nodes[ 0 ] . node . retry_payment ( & new_route, payment_id) . unwrap ( ) ;
0 commit comments