@@ -1998,10 +1998,10 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1998
1998
/// bit set (either as required or as available). If multiple paths are present in the Route,
1999
1999
/// we assume the invoice had the basic_mpp feature set.
2000
2000
pub fn send_payment ( & self , route : & Route , payment_hash : PaymentHash , payment_secret : & Option < PaymentSecret > ) -> Result < PaymentId , PaymentSendFailure > {
2001
- self . send_payment_internal ( route, payment_hash, payment_secret, None )
2001
+ self . send_payment_internal ( route, payment_hash, payment_secret, None , None )
2002
2002
}
2003
2003
2004
- fn send_payment_internal ( & self , route : & Route , payment_hash : PaymentHash , payment_secret : & Option < PaymentSecret > , keysend_preimage : Option < PaymentPreimage > ) -> Result < PaymentId , PaymentSendFailure > {
2004
+ fn send_payment_internal ( & self , route : & Route , payment_hash : PaymentHash , payment_secret : & Option < PaymentSecret > , keysend_preimage : Option < PaymentPreimage > , payment_id : Option < PaymentId > ) -> Result < PaymentId , PaymentSendFailure > {
2005
2005
if route. paths . len ( ) < 1 {
2006
2006
return Err ( PaymentSendFailure :: ParameterError ( APIError :: RouteError { err : "There must be at least one path to send over" } ) ) ;
2007
2007
}
@@ -2017,7 +2017,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2017
2017
let mut total_value = 0 ;
2018
2018
let our_node_id = self . get_our_node_id ( ) ;
2019
2019
let mut path_errs = Vec :: with_capacity ( route. paths . len ( ) ) ;
2020
- let payment_id = PaymentId ( self . keys_manager . get_secure_random_bytes ( ) ) ;
2020
+ let payment_id = if let Some ( id ) = payment_id { id } else { PaymentId ( self . keys_manager . get_secure_random_bytes ( ) ) } ;
2021
2021
' path_check: for path in route. paths . iter ( ) {
2022
2022
if path. len ( ) < 1 || path. len ( ) > 20 {
2023
2023
path_errs. push ( Err ( APIError :: RouteError { err : "Path didn't go anywhere/had bogus size" } ) ) ;
@@ -2083,7 +2083,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2083
2083
None => PaymentPreimage ( self . keys_manager . get_secure_random_bytes ( ) ) ,
2084
2084
} ;
2085
2085
let payment_hash = PaymentHash ( Sha256 :: hash ( & preimage. 0 ) . into_inner ( ) ) ;
2086
- match self . send_payment_internal ( route, payment_hash, & None , Some ( preimage) ) {
2086
+ match self . send_payment_internal ( route, payment_hash, & None , Some ( preimage) , None ) {
2087
2087
Ok ( payment_id) => Ok ( ( payment_hash, payment_id) ) ,
2088
2088
Err ( e) => Err ( e)
2089
2089
}
@@ -5936,7 +5936,7 @@ mod tests {
5936
5936
5937
5937
let test_preimage = PaymentPreimage ( [ 42 ; 32 ] ) ;
5938
5938
let mismatch_payment_hash = PaymentHash ( [ 43 ; 32 ] ) ;
5939
- let _ = nodes[ 0 ] . node . send_payment_internal ( & route, mismatch_payment_hash, & None , Some ( test_preimage) ) . unwrap ( ) ;
5939
+ let _ = nodes[ 0 ] . node . send_payment_internal ( & route, mismatch_payment_hash, & None , Some ( test_preimage) , None ) . unwrap ( ) ;
5940
5940
check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
5941
5941
5942
5942
let updates = get_htlc_update_msgs ! ( nodes[ 0 ] , nodes[ 1 ] . node. get_our_node_id( ) ) ;
@@ -5973,7 +5973,7 @@ mod tests {
5973
5973
let test_preimage = PaymentPreimage ( [ 42 ; 32 ] ) ;
5974
5974
let test_secret = PaymentSecret ( [ 43 ; 32 ] ) ;
5975
5975
let payment_hash = PaymentHash ( Sha256 :: hash ( & test_preimage. 0 ) . into_inner ( ) ) ;
5976
- let _ = nodes[ 0 ] . node . send_payment_internal ( & route, payment_hash, & Some ( test_secret) , Some ( test_preimage) ) . unwrap ( ) ;
5976
+ let _ = nodes[ 0 ] . node . send_payment_internal ( & route, payment_hash, & Some ( test_secret) , Some ( test_preimage) , None ) . unwrap ( ) ;
5977
5977
check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
5978
5978
5979
5979
let updates = get_htlc_update_msgs ! ( nodes[ 0 ] , nodes[ 1 ] . node. get_our_node_id( ) ) ;
0 commit comments