@@ -2756,7 +2756,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
27562756 }
27572757
27582758 let route = Route { paths : vec ! [ hops] , payment_params : None } ;
2759-
2759+
27602760 match self . send_payment_internal ( & route, payment_hash, & None , None , Some ( payment_id) , None ) {
27612761 Ok ( payment_id) => Ok ( ( payment_hash, payment_id) ) ,
27622762 Err ( e) => Err ( e)
@@ -2765,7 +2765,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
27652765
27662766 /// Returns whether a payment with the given [`PaymentHash`] and [`PaymentId`] is, in fact, a
27672767 /// payment probe.
2768- fn payment_is_probe ( & self , payment_hash : & PaymentHash , payment_id : & PaymentId ) -> bool {
2768+ pub ( crate ) fn payment_is_probe ( & self , payment_hash : & PaymentHash , payment_id : & PaymentId ) -> bool {
27692769 let target_payment_hash = self . probing_cookie_from_id ( payment_id) ;
27702770 target_payment_hash == * payment_hash
27712771 }
@@ -7752,158 +7752,6 @@ mod tests {
77527752 // Check that using the original payment hash succeeds.
77537753 assert ! ( inbound_payment:: verify( payment_hash, & payment_data, nodes[ 0 ] . node. highest_seen_timestamp. load( Ordering :: Acquire ) as u64 , & nodes[ 0 ] . node. inbound_payment_key, & nodes[ 0 ] . logger) . is_ok( ) ) ;
77547754 }
7755-
7756- #[ test]
7757- fn sent_probe_is_probe_of_sending_node ( ) {
7758- let chanmon_cfgs = create_chanmon_cfgs ( 3 ) ;
7759- let node_cfgs = create_node_cfgs ( 3 , & chanmon_cfgs) ;
7760- let node_chanmgrs = create_node_chanmgrs ( 3 , & node_cfgs, & [ None , None , None , None ] ) ;
7761- let nodes = create_network ( 3 , & node_cfgs, & node_chanmgrs) ;
7762-
7763- create_announced_chan_between_nodes ( & nodes, 0 , 1 , InitFeatures :: known ( ) , InitFeatures :: known ( ) ) ;
7764- create_announced_chan_between_nodes ( & nodes, 1 , 2 , InitFeatures :: known ( ) , InitFeatures :: known ( ) ) ;
7765-
7766- // First check we refuse to build a single-hop probe
7767- let ( route, _, _, _) = get_route_and_payment_hash ! ( & nodes[ 0 ] , nodes[ 1 ] , 100_000 ) ;
7768- assert ! ( nodes[ 0 ] . node. send_probe( route. paths[ 0 ] . clone( ) ) . is_err( ) ) ;
7769-
7770- // Then build an actual two-hop probing path
7771- let ( route, _, _, _) = get_route_and_payment_hash ! ( & nodes[ 0 ] , nodes[ 2 ] , 100_000 ) ;
7772-
7773- match nodes[ 0 ] . node . send_probe ( route. paths [ 0 ] . clone ( ) ) {
7774- Ok ( ( payment_hash, payment_id) ) => {
7775- assert ! ( nodes[ 0 ] . node. payment_is_probe( & payment_hash, & payment_id) ) ;
7776- assert ! ( !nodes[ 1 ] . node. payment_is_probe( & payment_hash, & payment_id) ) ;
7777- assert ! ( !nodes[ 2 ] . node. payment_is_probe( & payment_hash, & payment_id) ) ;
7778- } ,
7779- _ => panic ! ( ) ,
7780- }
7781-
7782- let mut msg_events = nodes[ 0 ] . node . get_and_clear_pending_msg_events ( ) ;
7783- assert_eq ! ( msg_events. len( ) , 1 ) ;
7784- match msg_events. pop ( ) . unwrap ( ) {
7785- MessageSendEvent :: UpdateHTLCs { node_id, .. } => {
7786- assert_eq ! ( node_id, nodes[ 1 ] . node. get_our_node_id( ) ) ;
7787- } ,
7788- _ => panic ! ( ) ,
7789- }
7790- check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
7791- }
7792-
7793- #[ test]
7794- fn successful_probe_yields_event ( ) {
7795- let chanmon_cfgs = create_chanmon_cfgs ( 3 ) ;
7796- let node_cfgs = create_node_cfgs ( 3 , & chanmon_cfgs) ;
7797- let node_chanmgrs = create_node_chanmgrs ( 3 , & node_cfgs, & [ None , None , None , None ] ) ;
7798- let nodes = create_network ( 3 , & node_cfgs, & node_chanmgrs) ;
7799-
7800- create_announced_chan_between_nodes ( & nodes, 0 , 1 , InitFeatures :: known ( ) , InitFeatures :: known ( ) ) ;
7801- create_announced_chan_between_nodes ( & nodes, 1 , 2 , InitFeatures :: known ( ) , InitFeatures :: known ( ) ) ;
7802-
7803- let ( route, _, _, _) = get_route_and_payment_hash ! ( & nodes[ 0 ] , nodes[ 2 ] , 100_000 ) ;
7804-
7805- let ( payment_hash, payment_id) = nodes[ 0 ] . node . send_probe ( route. paths [ 0 ] . clone ( ) ) . unwrap ( ) ;
7806-
7807- // node[0] -- update_add_htlcs -> node[1]
7808- check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
7809- let updates = get_htlc_update_msgs ! ( nodes[ 0 ] , nodes[ 1 ] . node. get_our_node_id( ) ) ;
7810- let probe_event = SendEvent :: from_commitment_update ( nodes[ 1 ] . node . get_our_node_id ( ) , updates) ;
7811- nodes[ 1 ] . node . handle_update_add_htlc ( & nodes[ 0 ] . node . get_our_node_id ( ) , & probe_event. msgs [ 0 ] ) ;
7812- check_added_monitors ! ( nodes[ 1 ] , 0 ) ;
7813- commitment_signed_dance ! ( nodes[ 1 ] , nodes[ 0 ] , probe_event. commitment_msg, false ) ;
7814- expect_pending_htlcs_forwardable ! ( nodes[ 1 ] ) ;
7815-
7816- // node[1] -- update_add_htlcs -> node[2]
7817- check_added_monitors ! ( nodes[ 1 ] , 1 ) ;
7818- let updates = get_htlc_update_msgs ! ( nodes[ 1 ] , nodes[ 2 ] . node. get_our_node_id( ) ) ;
7819- assert_eq ! ( updates. update_add_htlcs. len( ) , 1 ) ;
7820- let probe_event = SendEvent :: from_commitment_update ( nodes[ 1 ] . node . get_our_node_id ( ) , updates) ;
7821- nodes[ 2 ] . node . handle_update_add_htlc ( & nodes[ 1 ] . node . get_our_node_id ( ) , & probe_event. msgs [ 0 ] ) ;
7822- check_added_monitors ! ( nodes[ 2 ] , 0 ) ;
7823- commitment_signed_dance ! ( nodes[ 2 ] , nodes[ 1 ] , probe_event. commitment_msg, true , true ) ;
7824-
7825- // node[1] <- update_fail_htlcs -- node[2]
7826- let updates = get_htlc_update_msgs ! ( nodes[ 2 ] , nodes[ 1 ] . node. get_our_node_id( ) ) ;
7827- assert ! ( updates. update_add_htlcs. is_empty( ) ) ;
7828- assert ! ( updates. update_fulfill_htlcs. is_empty( ) ) ;
7829- assert_eq ! ( updates. update_fail_htlcs. len( ) , 1 ) ;
7830- assert ! ( updates. update_fail_malformed_htlcs. is_empty( ) ) ;
7831- assert ! ( updates. update_fee. is_none( ) ) ;
7832- nodes[ 1 ] . node . handle_update_fail_htlc ( & nodes[ 2 ] . node . get_our_node_id ( ) , & updates. update_fail_htlcs [ 0 ] ) ;
7833- check_added_monitors ! ( nodes[ 1 ] , 0 ) ;
7834- commitment_signed_dance ! ( nodes[ 1 ] , nodes[ 2 ] , updates. commitment_signed, true ) ;
7835-
7836- // node[0] <- update_fail_htlcs -- node[1]
7837- let updates = get_htlc_update_msgs ! ( nodes[ 1 ] , nodes[ 0 ] . node. get_our_node_id( ) ) ;
7838- assert ! ( updates. update_add_htlcs. is_empty( ) ) ;
7839- assert ! ( updates. update_fulfill_htlcs. is_empty( ) ) ;
7840- assert_eq ! ( updates. update_fail_htlcs. len( ) , 1 ) ;
7841- assert ! ( updates. update_fail_malformed_htlcs. is_empty( ) ) ;
7842- assert ! ( updates. update_fee. is_none( ) ) ;
7843- nodes[ 0 ] . node . handle_update_fail_htlc ( & nodes[ 1 ] . node . get_our_node_id ( ) , & updates. update_fail_htlcs [ 0 ] ) ;
7844- check_added_monitors ! ( nodes[ 0 ] , 0 ) ;
7845- commitment_signed_dance ! ( nodes[ 0 ] , nodes[ 1 ] , updates. commitment_signed, false ) ;
7846-
7847- let mut events = nodes[ 0 ] . node . get_and_clear_pending_events ( ) ;
7848- assert_eq ! ( events. len( ) , 1 ) ;
7849- match events. drain ( ..) . next ( ) . unwrap ( ) {
7850- crate :: util:: events:: Event :: ProbeSuccessful { payment_id : ev_pid, payment_hash : ev_ph, .. } => {
7851- assert_eq ! ( payment_id, ev_pid) ;
7852- assert_eq ! ( payment_hash, ev_ph) ;
7853- } ,
7854- _ => panic ! ( ) ,
7855- } ;
7856- }
7857-
7858- #[ test]
7859- fn failed_probe_yields_event ( ) {
7860- let chanmon_cfgs = create_chanmon_cfgs ( 3 ) ;
7861- let node_cfgs = create_node_cfgs ( 3 , & chanmon_cfgs) ;
7862- let node_chanmgrs = create_node_chanmgrs ( 3 , & node_cfgs, & [ None , None , None , None ] ) ;
7863- let nodes = create_network ( 3 , & node_cfgs, & node_chanmgrs) ;
7864-
7865- create_announced_chan_between_nodes ( & nodes, 0 , 1 , InitFeatures :: known ( ) , InitFeatures :: known ( ) ) ;
7866- create_announced_chan_between_nodes_with_value ( & nodes, 1 , 2 , 100000 , 90000000 , InitFeatures :: known ( ) , InitFeatures :: known ( ) ) ;
7867-
7868- let payment_params = PaymentParameters :: from_node_id ( nodes[ 2 ] . node . get_our_node_id ( ) ) ;
7869-
7870- let ( route, _, _, _) = get_route_and_payment_hash ! ( & nodes[ 0 ] , nodes[ 2 ] , & payment_params, 9_999_000 , 42 ) ;
7871-
7872- let ( payment_hash, payment_id) = nodes[ 0 ] . node . send_probe ( route. paths [ 0 ] . clone ( ) ) . unwrap ( ) ;
7873-
7874- // node[0] -- update_add_htlcs -> node[1]
7875- check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
7876- let updates = get_htlc_update_msgs ! ( nodes[ 0 ] , nodes[ 1 ] . node. get_our_node_id( ) ) ;
7877- let probe_event = SendEvent :: from_commitment_update ( nodes[ 1 ] . node . get_our_node_id ( ) , updates) ;
7878- nodes[ 1 ] . node . handle_update_add_htlc ( & nodes[ 0 ] . node . get_our_node_id ( ) , & probe_event. msgs [ 0 ] ) ;
7879- check_added_monitors ! ( nodes[ 1 ] , 0 ) ;
7880- commitment_signed_dance ! ( nodes[ 1 ] , nodes[ 0 ] , probe_event. commitment_msg, false ) ;
7881- expect_pending_htlcs_forwardable ! ( nodes[ 1 ] ) ;
7882-
7883- // node[0] <- update_fail_htlcs -- node[1]
7884- check_added_monitors ! ( nodes[ 1 ] , 1 ) ;
7885- let updates = get_htlc_update_msgs ! ( nodes[ 1 ] , nodes[ 0 ] . node. get_our_node_id( ) ) ;
7886- // Skip the PendingHTLCsForwardable event
7887- let _events = nodes[ 1 ] . node . get_and_clear_pending_events ( ) ;
7888- assert ! ( updates. update_add_htlcs. is_empty( ) ) ;
7889- assert ! ( updates. update_fulfill_htlcs. is_empty( ) ) ;
7890- assert_eq ! ( updates. update_fail_htlcs. len( ) , 1 ) ;
7891- assert ! ( updates. update_fail_malformed_htlcs. is_empty( ) ) ;
7892- assert ! ( updates. update_fee. is_none( ) ) ;
7893- nodes[ 0 ] . node . handle_update_fail_htlc ( & nodes[ 1 ] . node . get_our_node_id ( ) , & updates. update_fail_htlcs [ 0 ] ) ;
7894- check_added_monitors ! ( nodes[ 0 ] , 0 ) ;
7895- commitment_signed_dance ! ( nodes[ 0 ] , nodes[ 1 ] , updates. commitment_signed, false ) ;
7896-
7897- let mut events = nodes[ 0 ] . node . get_and_clear_pending_events ( ) ;
7898- assert_eq ! ( events. len( ) , 1 ) ;
7899- match events. drain ( ..) . next ( ) . unwrap ( ) {
7900- crate :: util:: events:: Event :: ProbeFailed { payment_id : ev_pid, payment_hash : ev_ph, .. } => {
7901- assert_eq ! ( payment_id, ev_pid) ;
7902- assert_eq ! ( payment_hash, ev_ph) ;
7903- } ,
7904- _ => panic ! ( ) ,
7905- } ;
7906- }
79077755}
79087756
79097757#[ cfg( all( any( test, feature = "_test_utils" ) , feature = "_bench_unstable" ) ) ]
0 commit comments