@@ -3140,17 +3140,13 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3140
3140
let mut session_priv_bytes = [ 0 ; 32 ] ;
3141
3141
session_priv_bytes. copy_from_slice ( & session_priv[ ..] ) ;
3142
3142
let mut outbounds = self . pending_outbound_payments . lock ( ) . unwrap ( ) ;
3143
- if let Some ( sessions) = outbounds. get_mut ( & mpp_id) {
3144
- if sessions. remove ( & session_priv_bytes) {
3145
- self . pending_events . lock ( ) . unwrap ( ) . push (
3146
- events:: Event :: PaymentSent { payment_preimage }
3147
- ) ;
3148
- if sessions. len ( ) == 0 {
3149
- outbounds. remove ( & mpp_id) ;
3150
- }
3151
- } else {
3152
- log_trace ! ( self . logger, "Received duplicative fulfill for HTLC with payment_preimage {}" , log_bytes!( payment_preimage. 0 ) ) ;
3153
- }
3143
+ let found_payment = if let Some ( mut sessions) = outbounds. remove ( & mpp_id) {
3144
+ sessions. remove ( & session_priv_bytes)
3145
+ } else { false } ;
3146
+ if found_payment {
3147
+ self . pending_events . lock ( ) . unwrap ( ) . push (
3148
+ events:: Event :: PaymentSent { payment_preimage }
3149
+ ) ;
3154
3150
} else {
3155
3151
log_trace ! ( self . logger, "Received duplicative fulfill for HTLC with payment_preimage {}" , log_bytes!( payment_preimage. 0 ) ) ;
3156
3152
}
@@ -5691,20 +5687,15 @@ mod tests {
5691
5687
nodes[ 0 ] . node . handle_revoke_and_ack ( & nodes[ 1 ] . node . get_our_node_id ( ) , & bs_third_raa) ;
5692
5688
check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
5693
5689
5694
- // There's an existing bug that generates a PaymentSent event for each MPP path, so handle that here.
5690
+ // Note that successful MPP payments will generate 1 event upon the first path's success. No
5691
+ // further events will be generated for subsequence path successes.
5695
5692
let events = nodes[ 0 ] . node . get_and_clear_pending_events ( ) ;
5696
5693
match events[ 0 ] {
5697
5694
Event :: PaymentSent { payment_preimage : ref preimage } => {
5698
5695
assert_eq ! ( payment_preimage, * preimage) ;
5699
5696
} ,
5700
5697
_ => panic ! ( "Unexpected event" ) ,
5701
5698
}
5702
- match events[ 1 ] {
5703
- Event :: PaymentSent { payment_preimage : ref preimage } => {
5704
- assert_eq ! ( payment_preimage, * preimage) ;
5705
- } ,
5706
- _ => panic ! ( "Unexpected event" ) ,
5707
- }
5708
5699
}
5709
5700
5710
5701
#[ test]
0 commit comments