@@ -227,6 +227,52 @@ fn check_payment_err(send_err: PaymentSendFailure) {
227
227
}
228
228
}
229
229
230
+ type ChanMan = ChannelManager < EnforcingChannelKeys , Arc < TestChainMonitor > , Arc < TestBroadcaster > , Arc < KeyProvider > , Arc < FuzzEstimator > , Arc < dyn Logger > > ;
231
+
232
+ #[ inline]
233
+ fn send_payment ( source : & ChanMan , dest : & ChanMan , dest_chan_id : u64 , amt : u64 , payment_id : & mut u8 ) -> bool {
234
+ let payment_hash = Sha256 :: hash ( & [ * payment_id; 1 ] ) ;
235
+ * payment_id = payment_id. wrapping_add ( 1 ) ;
236
+ if let Err ( err) = source. send_payment ( & Route {
237
+ paths : vec ! [ vec![ RouteHop {
238
+ pubkey: dest. get_our_node_id( ) ,
239
+ node_features: NodeFeatures :: empty( ) ,
240
+ short_channel_id: dest_chan_id,
241
+ channel_features: ChannelFeatures :: empty( ) ,
242
+ fee_msat: amt,
243
+ cltv_expiry_delta: 200 ,
244
+ } ] ] ,
245
+ } , PaymentHash ( payment_hash. into_inner ( ) ) , & None ) {
246
+ check_payment_err ( err) ;
247
+ false
248
+ } else { true }
249
+ }
250
+ #[ inline]
251
+ fn send_hop_payment ( source : & ChanMan , middle : & ChanMan , middle_chan_id : u64 , dest : & ChanMan , dest_chan_id : u64 , amt : u64 , payment_id : & mut u8 ) -> bool {
252
+ let payment_hash = Sha256 :: hash ( & [ * payment_id; 1 ] ) ;
253
+ * payment_id = payment_id. wrapping_add ( 1 ) ;
254
+ if let Err ( err) = source. send_payment ( & Route {
255
+ paths : vec ! [ vec![ RouteHop {
256
+ pubkey: middle. get_our_node_id( ) ,
257
+ node_features: NodeFeatures :: empty( ) ,
258
+ short_channel_id: middle_chan_id,
259
+ channel_features: ChannelFeatures :: empty( ) ,
260
+ fee_msat: 50000 ,
261
+ cltv_expiry_delta: 100 ,
262
+ } , RouteHop {
263
+ pubkey: dest. get_our_node_id( ) ,
264
+ node_features: NodeFeatures :: empty( ) ,
265
+ short_channel_id: dest_chan_id,
266
+ channel_features: ChannelFeatures :: empty( ) ,
267
+ fee_msat: amt,
268
+ cltv_expiry_delta: 200 ,
269
+ } ] ] ,
270
+ } , PaymentHash ( payment_hash. into_inner ( ) ) , & None ) {
271
+ check_payment_err ( err) ;
272
+ false
273
+ } else { true }
274
+ }
275
+
230
276
#[ inline]
231
277
pub fn do_test < Out : test_logger:: Output > ( data : & [ u8 ] , out : Out ) {
232
278
let fee_est = Arc :: new ( FuzzEstimator { } ) ;
@@ -242,7 +288,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
242
288
config. channel_options. fee_proportional_millionths = 0 ;
243
289
config. channel_options. announced_channel = true ;
244
290
config. peer_channel_config_limits. min_dust_limit_satoshis = 0 ;
245
- ( Arc :: new ( ChannelManager :: new( Network :: Bitcoin , fee_est. clone( ) , monitor. clone( ) , broadcast. clone( ) , Arc :: clone( & logger) , keys_manager. clone( ) , config, 0 ) ) ,
291
+ ( ChannelManager :: new( Network :: Bitcoin , fee_est. clone( ) , monitor. clone( ) , broadcast. clone( ) , Arc :: clone( & logger) , keys_manager. clone( ) , config, 0 ) ,
246
292
monitor)
247
293
} }
248
294
}
@@ -279,7 +325,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
279
325
channel_monitors: monitor_refs,
280
326
} ;
281
327
282
- ( <( BlockHash , ChannelManager < EnforcingChannelKeys , Arc < TestChainMonitor > , Arc < TestBroadcaster > , Arc < KeyProvider > , Arc < FuzzEstimator > , Arc <dyn Logger >> ) >:: read( & mut Cursor :: new( & $ser. 0 ) , read_args) . expect( "Failed to read manager" ) . 1 , chain_monitor)
328
+ ( <( BlockHash , ChanMan ) >:: read( & mut Cursor :: new( & $ser. 0 ) , read_args) . expect( "Failed to read manager" ) . 1 , chain_monitor)
283
329
} }
284
330
}
285
331
@@ -389,9 +435,9 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
389
435
390
436
// 3 nodes is enough to hit all the possible cases, notably unknown-source-unknown-dest
391
437
// forwarding.
392
- let ( mut node_a, mut monitor_a) = make_node ! ( 0 ) ;
393
- let ( mut node_b, mut monitor_b) = make_node ! ( 1 ) ;
394
- let ( mut node_c, mut monitor_c) = make_node ! ( 2 ) ;
438
+ let ( node_a, mut monitor_a) = make_node ! ( 0 ) ;
439
+ let ( node_b, mut monitor_b) = make_node ! ( 1 ) ;
440
+ let ( node_c, mut monitor_c) = make_node ! ( 2 ) ;
395
441
396
442
let mut nodes = [ node_a, node_b, node_c] ;
397
443
@@ -407,7 +453,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
407
453
let chan_a = nodes[ 0 ] . list_usable_channels ( ) [ 0 ] . short_channel_id . unwrap ( ) ;
408
454
let chan_b = nodes[ 2 ] . list_usable_channels ( ) [ 0 ] . short_channel_id . unwrap ( ) ;
409
455
410
- let mut payment_id = 0 ;
456
+ let mut payment_id: u8 = 0 ;
411
457
412
458
let mut chan_a_disconnected = false ;
413
459
let mut chan_b_disconnected = false ;
@@ -445,47 +491,6 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
445
491
}
446
492
447
493
loop {
448
- macro_rules! send_payment {
449
- ( $source: expr, $dest: expr, $amt: expr) => { {
450
- let payment_hash = Sha256 :: hash( & [ payment_id; 1 ] ) ;
451
- payment_id = payment_id. wrapping_add( 1 ) ;
452
- if let Err ( err) = $source. send_payment( & Route {
453
- paths: vec![ vec![ RouteHop {
454
- pubkey: $dest. 0 . get_our_node_id( ) ,
455
- node_features: NodeFeatures :: empty( ) ,
456
- short_channel_id: $dest. 1 ,
457
- channel_features: ChannelFeatures :: empty( ) ,
458
- fee_msat: $amt,
459
- cltv_expiry_delta: 200 ,
460
- } ] ] ,
461
- } , PaymentHash ( payment_hash. into_inner( ) ) , & None ) {
462
- check_payment_err( err) ;
463
- }
464
- } } ;
465
- ( $source: expr, $middle: expr, $dest: expr, $amt: expr) => { {
466
- let payment_hash = Sha256 :: hash( & [ payment_id; 1 ] ) ;
467
- payment_id = payment_id. wrapping_add( 1 ) ;
468
- if let Err ( err) = $source. send_payment( & Route {
469
- paths: vec![ vec![ RouteHop {
470
- pubkey: $middle. 0 . get_our_node_id( ) ,
471
- node_features: NodeFeatures :: empty( ) ,
472
- short_channel_id: $middle. 1 ,
473
- channel_features: ChannelFeatures :: empty( ) ,
474
- fee_msat: 50000 ,
475
- cltv_expiry_delta: 100 ,
476
- } , RouteHop {
477
- pubkey: $dest. 0 . get_our_node_id( ) ,
478
- node_features: NodeFeatures :: empty( ) ,
479
- short_channel_id: $dest. 1 ,
480
- channel_features: ChannelFeatures :: empty( ) ,
481
- fee_msat: $amt,
482
- cltv_expiry_delta: 200 ,
483
- } ] ] ,
484
- } , PaymentHash ( payment_hash. into_inner( ) ) , & None ) {
485
- check_payment_err( err) ;
486
- }
487
- } }
488
- }
489
494
macro_rules! send_payment_with_secret {
490
495
( $source: expr, $middle: expr, $dest: expr) => { {
491
496
let payment_hash = Sha256 :: hash( & [ payment_id; 1 ] ) ;
@@ -783,8 +788,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
783
788
drain_msg_events_on_disconnect ! ( 0 ) ;
784
789
}
785
790
let ( new_node_a, new_monitor_a) = reload_node ! ( node_a_ser, 0 , monitor_a) ;
786
- node_a = Arc :: new ( new_node_a) ;
787
- nodes[ 0 ] = node_a. clone ( ) ;
791
+ nodes[ 0 ] = new_node_a;
788
792
monitor_a = new_monitor_a;
789
793
} ,
790
794
0x1d => {
@@ -801,8 +805,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
801
805
bc_events. clear ( ) ;
802
806
}
803
807
let ( new_node_b, new_monitor_b) = reload_node ! ( node_b_ser, 1 , monitor_b) ;
804
- node_b = Arc :: new ( new_node_b) ;
805
- nodes[ 1 ] = node_b. clone ( ) ;
808
+ nodes[ 1 ] = new_node_b;
806
809
monitor_b = new_monitor_b;
807
810
} ,
808
811
0x1e => {
@@ -812,70 +815,69 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
812
815
drain_msg_events_on_disconnect ! ( 2 ) ;
813
816
}
814
817
let ( new_node_c, new_monitor_c) = reload_node ! ( node_c_ser, 2 , monitor_c) ;
815
- node_c = Arc :: new ( new_node_c) ;
816
- nodes[ 2 ] = node_c. clone ( ) ;
818
+ nodes[ 2 ] = new_node_c;
817
819
monitor_c = new_monitor_c;
818
820
} ,
819
821
820
822
// 1/10th the channel size:
821
- 0x20 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , 10_000_000 ) ,
822
- 0x21 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 0 ] , chan_a) , 10_000_000 ) ,
823
- 0x22 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 2 ] , chan_b) , 10_000_000 ) ,
824
- 0x23 => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , 10_000_000 ) ,
825
- 0x24 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) , 10_000_000 ) ,
826
- 0x25 => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) , 10_000_000 ) ,
827
-
828
- 0x26 => send_payment_with_secret ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) ) ,
829
- 0x27 => send_payment_with_secret ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) ) ,
830
-
831
- 0x28 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , 1_000_000 ) ,
832
- 0x29 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 0 ] , chan_a) , 1_000_000 ) ,
833
- 0x2a => send_payment ! ( nodes[ 1 ] , ( & nodes[ 2 ] , chan_b) , 1_000_000 ) ,
834
- 0x2b => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , 1_000_000 ) ,
835
- 0x2c => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) , 1_000_000 ) ,
836
- 0x2d => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) , 1_000_000 ) ,
837
-
838
- 0x30 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , 100_000 ) ,
839
- 0x31 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 0 ] , chan_a) , 100_000 ) ,
840
- 0x32 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 2 ] , chan_b) , 100_000 ) ,
841
- 0x33 => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , 100_000 ) ,
842
- 0x34 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) , 100_000 ) ,
843
- 0x35 => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) , 100_000 ) ,
844
-
845
- 0x38 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , 10_000 ) ,
846
- 0x39 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 0 ] , chan_a) , 10_000 ) ,
847
- 0x3a => send_payment ! ( nodes[ 1 ] , ( & nodes[ 2 ] , chan_b) , 10_000 ) ,
848
- 0x3b => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , 10_000 ) ,
849
- 0x3c => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) , 10_000 ) ,
850
- 0x3d => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) , 10_000 ) ,
851
-
852
- 0x40 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , 1_000 ) ,
853
- 0x41 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 0 ] , chan_a) , 1_000 ) ,
854
- 0x42 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 2 ] , chan_b) , 1_000 ) ,
855
- 0x43 => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , 1_000 ) ,
856
- 0x44 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) , 1_000 ) ,
857
- 0x45 => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) , 1_000 ) ,
858
-
859
- 0x48 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , 100 ) ,
860
- 0x49 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 0 ] , chan_a) , 100 ) ,
861
- 0x4a => send_payment ! ( nodes[ 1 ] , ( & nodes[ 2 ] , chan_b) , 100 ) ,
862
- 0x4b => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , 100 ) ,
863
- 0x4c => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) , 100 ) ,
864
- 0x4d => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) , 100 ) ,
865
-
866
- 0x50 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , 10 ) ,
867
- 0x51 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 0 ] , chan_a) , 10 ) ,
868
- 0x52 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 2 ] , chan_b) , 10 ) ,
869
- 0x53 => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , 10 ) ,
870
- 0x54 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) , 10 ) ,
871
- 0x55 => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) , 10 ) ,
872
-
873
- 0x58 => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , 1 ) ,
874
- 0x59 => send_payment ! ( nodes[ 1 ] , ( & nodes[ 0 ] , chan_a) , 1 ) ,
875
- 0x5a => send_payment ! ( nodes[ 1 ] , ( & nodes[ 2 ] , chan_b) , 1 ) ,
876
- 0x5b => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , 1 ) ,
877
- 0x5c => send_payment ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) , 1 ) ,
878
- 0x5d => send_payment ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) , 1 ) ,
823
+ 0x20 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10_000_000 , & mut payment_id ) ; } ,
824
+ 0x21 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10_000_000 , & mut payment_id ) ; } ,
825
+ 0x22 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10_000_000 , & mut payment_id ) ; } ,
826
+ 0x23 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10_000_000 , & mut payment_id ) ; } ,
827
+ 0x24 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 10_000_000 , & mut payment_id ) ; } ,
828
+ 0x25 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 10_000_000 , & mut payment_id ) ; } ,
829
+
830
+ 0x26 => { send_payment_with_secret ! ( nodes[ 0 ] , ( & nodes[ 1 ] , chan_a) , ( & nodes[ 2 ] , chan_b) ) ; } ,
831
+ 0x27 => { send_payment_with_secret ! ( nodes[ 2 ] , ( & nodes[ 1 ] , chan_b) , ( & nodes[ 0 ] , chan_a) ) ; } ,
832
+
833
+ 0x28 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 1_000_000 , & mut payment_id ) ; } ,
834
+ 0x29 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 1_000_000 , & mut payment_id ) ; } ,
835
+ 0x2a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 1_000_000 , & mut payment_id ) ; } ,
836
+ 0x2b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 1_000_000 , & mut payment_id ) ; } ,
837
+ 0x2c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 1_000_000 , & mut payment_id ) ; } ,
838
+ 0x2d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 1_000_000 , & mut payment_id ) ; } ,
839
+
840
+ 0x30 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 100_000 , & mut payment_id ) ; } ,
841
+ 0x31 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 100_000 , & mut payment_id ) ; } ,
842
+ 0x32 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 100_000 , & mut payment_id ) ; } ,
843
+ 0x33 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 100_000 , & mut payment_id ) ; } ,
844
+ 0x34 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 100_000 , & mut payment_id ) ; } ,
845
+ 0x35 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 100_000 , & mut payment_id ) ; } ,
846
+
847
+ 0x38 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10_000 , & mut payment_id ) ; } ,
848
+ 0x39 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10_000 , & mut payment_id ) ; } ,
849
+ 0x3a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10_000 , & mut payment_id ) ; } ,
850
+ 0x3b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10_000 , & mut payment_id ) ; } ,
851
+ 0x3c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 10_000 , & mut payment_id ) ; } ,
852
+ 0x3d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 10_000 , & mut payment_id ) ; } ,
853
+
854
+ 0x40 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 1_000 , & mut payment_id ) ; } ,
855
+ 0x41 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 1_000 , & mut payment_id ) ; } ,
856
+ 0x42 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 1_000 , & mut payment_id ) ; } ,
857
+ 0x43 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 1_000 , & mut payment_id ) ; } ,
858
+ 0x44 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 1_000 , & mut payment_id ) ; } ,
859
+ 0x45 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 1_000 , & mut payment_id ) ; } ,
860
+
861
+ 0x48 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 100 , & mut payment_id ) ; } ,
862
+ 0x49 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 100 , & mut payment_id ) ; } ,
863
+ 0x4a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 100 , & mut payment_id ) ; } ,
864
+ 0x4b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 100 , & mut payment_id ) ; } ,
865
+ 0x4c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 100 , & mut payment_id ) ; } ,
866
+ 0x4d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 100 , & mut payment_id ) ; } ,
867
+
868
+ 0x50 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10 , & mut payment_id ) ; } ,
869
+ 0x51 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10 , & mut payment_id ) ; } ,
870
+ 0x52 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10 , & mut payment_id ) ; } ,
871
+ 0x53 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10 , & mut payment_id ) ; } ,
872
+ 0x54 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 10 , & mut payment_id ) ; } ,
873
+ 0x55 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 10 , & mut payment_id ) ; } ,
874
+
875
+ 0x58 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 1 , & mut payment_id ) ; } ,
876
+ 0x59 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 1 , & mut payment_id ) ; } ,
877
+ 0x5a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 1 , & mut payment_id ) ; } ,
878
+ 0x5b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 1 , & mut payment_id ) ; } ,
879
+ 0x5c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 1 , & mut payment_id ) ; } ,
880
+ 0x5d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 1 , & mut payment_id ) ; } ,
879
881
880
882
_ => test_return ! ( ) ,
881
883
}
0 commit comments