@@ -2756,7 +2756,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2756
2756
}
2757
2757
2758
2758
let route = Route { paths : vec ! [ hops] , payment_params : None } ;
2759
-
2759
+
2760
2760
match self . send_payment_internal ( & route, payment_hash, & None , None , Some ( payment_id) , None ) {
2761
2761
Ok ( payment_id) => Ok ( ( payment_hash, payment_id) ) ,
2762
2762
Err ( e) => Err ( e)
@@ -2765,7 +2765,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2765
2765
2766
2766
/// Returns whether a payment with the given [`PaymentHash`] and [`PaymentId`] is, in fact, a
2767
2767
/// 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 {
2769
2769
let target_payment_hash = self . probing_cookie_from_id ( payment_id) ;
2770
2770
target_payment_hash == * payment_hash
2771
2771
}
@@ -7752,158 +7752,6 @@ mod tests {
7752
7752
// Check that using the original payment hash succeeds.
7753
7753
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( ) ) ;
7754
7754
}
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
- }
7907
7755
}
7908
7756
7909
7757
#[ cfg( all( any( test, feature = "_test_utils" ) , feature = "_bench_unstable" ) ) ]
0 commit comments