@@ -38,7 +38,7 @@ use lightning::chain::transaction::OutPoint;
38
38
use lightning:: chain:: chaininterface:: { BroadcasterInterface , ConfirmationTarget , FeeEstimator } ;
39
39
use lightning:: chain:: keysinterface:: { KeyMaterial , KeysInterface , InMemorySigner , Recipient } ;
40
40
use lightning:: ln:: { PaymentHash , PaymentPreimage , PaymentSecret } ;
41
- use lightning:: ln:: channelmanager:: { self , ChainParameters , ChannelManager , PaymentSendFailure , ChannelManagerReadArgs } ;
41
+ use lightning:: ln:: channelmanager:: { self , ChainParameters , ChannelManager , PaymentSendFailure , ChannelManagerReadArgs , PaymentId } ;
42
42
use lightning:: ln:: channel:: FEE_SPIKE_BUFFER_FEE_INCREASE_MULTIPLE ;
43
43
use lightning:: ln:: msgs:: { CommitmentUpdate , ChannelMessageHandler , DecodeError , UpdateAddHTLC , Init } ;
44
44
use lightning:: ln:: script:: ShutdownScript ;
@@ -308,9 +308,12 @@ fn get_payment_secret_hash(dest: &ChanMan, payment_id: &mut u8) -> Option<(Payme
308
308
}
309
309
310
310
#[ inline]
311
- fn send_payment ( source : & ChanMan , dest : & ChanMan , dest_chan_id : u64 , amt : u64 , payment_id : & mut u8 ) -> bool {
311
+ fn send_payment ( source : & ChanMan , dest : & ChanMan , dest_chan_id : u64 , amt : u64 , payment_id : & mut u8 , payment_idx : & mut u64 ) -> bool {
312
312
let ( payment_secret, payment_hash) =
313
313
if let Some ( ( secret, hash) ) = get_payment_secret_hash ( dest, payment_id) { ( secret, hash) } else { return true ; } ;
314
+ let mut payment_id = [ 0 ; 32 ] ;
315
+ payment_id[ 0 ..8 ] . copy_from_slice ( & payment_idx. to_ne_bytes ( ) ) ;
316
+ * payment_idx += 1 ;
314
317
if let Err ( err) = source. send_payment ( & Route {
315
318
paths : vec ! [ vec![ RouteHop {
316
319
pubkey: dest. get_our_node_id( ) ,
@@ -321,15 +324,18 @@ fn send_payment(source: &ChanMan, dest: &ChanMan, dest_chan_id: u64, amt: u64, p
321
324
cltv_expiry_delta: 200 ,
322
325
} ] ] ,
323
326
payment_params : None ,
324
- } , payment_hash, & Some ( payment_secret) ) {
327
+ } , payment_hash, & Some ( payment_secret) , PaymentId ( payment_id ) ) {
325
328
check_payment_err ( err) ;
326
329
false
327
330
} else { true }
328
331
}
329
332
#[ inline]
330
- 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 {
333
+ fn send_hop_payment ( source : & ChanMan , middle : & ChanMan , middle_chan_id : u64 , dest : & ChanMan , dest_chan_id : u64 , amt : u64 , payment_id : & mut u8 , payment_idx : & mut u64 ) -> bool {
331
334
let ( payment_secret, payment_hash) =
332
335
if let Some ( ( secret, hash) ) = get_payment_secret_hash ( dest, payment_id) { ( secret, hash) } else { return true ; } ;
336
+ let mut payment_id = [ 0 ; 32 ] ;
337
+ payment_id[ 0 ..8 ] . copy_from_slice ( & payment_idx. to_ne_bytes ( ) ) ;
338
+ * payment_idx += 1 ;
333
339
if let Err ( err) = source. send_payment ( & Route {
334
340
paths : vec ! [ vec![ RouteHop {
335
341
pubkey: middle. get_our_node_id( ) ,
@@ -347,7 +353,7 @@ fn send_hop_payment(source: &ChanMan, middle: &ChanMan, middle_chan_id: u64, des
347
353
cltv_expiry_delta: 200 ,
348
354
} ] ] ,
349
355
payment_params : None ,
350
- } , payment_hash, & Some ( payment_secret) ) {
356
+ } , payment_hash, & Some ( payment_secret) , PaymentId ( payment_id ) ) {
351
357
check_payment_err ( err) ;
352
358
false
353
359
} else { true }
@@ -553,6 +559,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
553
559
let chan_b = nodes[ 2 ] . list_usable_channels ( ) [ 0 ] . short_channel_id . unwrap ( ) ;
554
560
555
561
let mut payment_id: u8 = 0 ;
562
+ let mut payment_idx: u64 = 0 ;
556
563
557
564
let mut chan_a_disconnected = false ;
558
565
let mut chan_b_disconnected = false ;
@@ -1037,61 +1044,61 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
1037
1044
} ,
1038
1045
1039
1046
// 1/10th the channel size:
1040
- 0x30 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10_000_000 , & mut payment_id) ; } ,
1041
- 0x31 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10_000_000 , & mut payment_id) ; } ,
1042
- 0x32 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10_000_000 , & mut payment_id) ; } ,
1043
- 0x33 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10_000_000 , & mut payment_id) ; } ,
1044
- 0x34 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 10_000_000 , & mut payment_id) ; } ,
1045
- 0x35 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 10_000_000 , & mut payment_id) ; } ,
1046
-
1047
- 0x38 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 1_000_000 , & mut payment_id) ; } ,
1048
- 0x39 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 1_000_000 , & mut payment_id) ; } ,
1049
- 0x3a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 1_000_000 , & mut payment_id) ; } ,
1050
- 0x3b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 1_000_000 , & mut payment_id) ; } ,
1051
- 0x3c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 1_000_000 , & mut payment_id) ; } ,
1052
- 0x3d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 1_000_000 , & mut payment_id) ; } ,
1053
-
1054
- 0x40 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 100_000 , & mut payment_id) ; } ,
1055
- 0x41 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 100_000 , & mut payment_id) ; } ,
1056
- 0x42 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 100_000 , & mut payment_id) ; } ,
1057
- 0x43 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 100_000 , & mut payment_id) ; } ,
1058
- 0x44 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 100_000 , & mut payment_id) ; } ,
1059
- 0x45 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 100_000 , & mut payment_id) ; } ,
1060
-
1061
- 0x48 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10_000 , & mut payment_id) ; } ,
1062
- 0x49 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10_000 , & mut payment_id) ; } ,
1063
- 0x4a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10_000 , & mut payment_id) ; } ,
1064
- 0x4b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10_000 , & mut payment_id) ; } ,
1065
- 0x4c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 10_000 , & mut payment_id) ; } ,
1066
- 0x4d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 10_000 , & mut payment_id) ; } ,
1067
-
1068
- 0x50 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 1_000 , & mut payment_id) ; } ,
1069
- 0x51 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 1_000 , & mut payment_id) ; } ,
1070
- 0x52 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 1_000 , & mut payment_id) ; } ,
1071
- 0x53 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 1_000 , & mut payment_id) ; } ,
1072
- 0x54 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 1_000 , & mut payment_id) ; } ,
1073
- 0x55 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 1_000 , & mut payment_id) ; } ,
1074
-
1075
- 0x58 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 100 , & mut payment_id) ; } ,
1076
- 0x59 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 100 , & mut payment_id) ; } ,
1077
- 0x5a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 100 , & mut payment_id) ; } ,
1078
- 0x5b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 100 , & mut payment_id) ; } ,
1079
- 0x5c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 100 , & mut payment_id) ; } ,
1080
- 0x5d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 100 , & mut payment_id) ; } ,
1081
-
1082
- 0x60 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10 , & mut payment_id) ; } ,
1083
- 0x61 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10 , & mut payment_id) ; } ,
1084
- 0x62 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10 , & mut payment_id) ; } ,
1085
- 0x63 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10 , & mut payment_id) ; } ,
1086
- 0x64 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 10 , & mut payment_id) ; } ,
1087
- 0x65 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 10 , & mut payment_id) ; } ,
1088
-
1089
- 0x68 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 1 , & mut payment_id) ; } ,
1090
- 0x69 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 1 , & mut payment_id) ; } ,
1091
- 0x6a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 1 , & mut payment_id) ; } ,
1092
- 0x6b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 1 , & mut payment_id) ; } ,
1093
- 0x6c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 1 , & mut payment_id) ; } ,
1094
- 0x6d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 1 , & mut payment_id) ; } ,
1047
+ 0x30 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1048
+ 0x31 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1049
+ 0x32 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1050
+ 0x33 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1051
+ 0x34 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 10_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1052
+ 0x35 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 10_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1053
+
1054
+ 0x38 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 1_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1055
+ 0x39 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 1_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1056
+ 0x3a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 1_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1057
+ 0x3b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 1_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1058
+ 0x3c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 1_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1059
+ 0x3d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 1_000_000 , & mut payment_id, & mut payment_idx ) ; } ,
1060
+
1061
+ 0x40 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 100_000 , & mut payment_id, & mut payment_idx ) ; } ,
1062
+ 0x41 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 100_000 , & mut payment_id, & mut payment_idx ) ; } ,
1063
+ 0x42 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 100_000 , & mut payment_id, & mut payment_idx ) ; } ,
1064
+ 0x43 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 100_000 , & mut payment_id, & mut payment_idx ) ; } ,
1065
+ 0x44 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 100_000 , & mut payment_id, & mut payment_idx ) ; } ,
1066
+ 0x45 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 100_000 , & mut payment_id, & mut payment_idx ) ; } ,
1067
+
1068
+ 0x48 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10_000 , & mut payment_id, & mut payment_idx ) ; } ,
1069
+ 0x49 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10_000 , & mut payment_id, & mut payment_idx ) ; } ,
1070
+ 0x4a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10_000 , & mut payment_id, & mut payment_idx ) ; } ,
1071
+ 0x4b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10_000 , & mut payment_id, & mut payment_idx ) ; } ,
1072
+ 0x4c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 10_000 , & mut payment_id, & mut payment_idx ) ; } ,
1073
+ 0x4d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 10_000 , & mut payment_id, & mut payment_idx ) ; } ,
1074
+
1075
+ 0x50 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 1_000 , & mut payment_id, & mut payment_idx ) ; } ,
1076
+ 0x51 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 1_000 , & mut payment_id, & mut payment_idx ) ; } ,
1077
+ 0x52 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 1_000 , & mut payment_id, & mut payment_idx ) ; } ,
1078
+ 0x53 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 1_000 , & mut payment_id, & mut payment_idx ) ; } ,
1079
+ 0x54 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 1_000 , & mut payment_id, & mut payment_idx ) ; } ,
1080
+ 0x55 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 1_000 , & mut payment_id, & mut payment_idx ) ; } ,
1081
+
1082
+ 0x58 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 100 , & mut payment_id, & mut payment_idx ) ; } ,
1083
+ 0x59 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 100 , & mut payment_id, & mut payment_idx ) ; } ,
1084
+ 0x5a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 100 , & mut payment_id, & mut payment_idx ) ; } ,
1085
+ 0x5b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 100 , & mut payment_id, & mut payment_idx ) ; } ,
1086
+ 0x5c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 100 , & mut payment_id, & mut payment_idx ) ; } ,
1087
+ 0x5d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 100 , & mut payment_id, & mut payment_idx ) ; } ,
1088
+
1089
+ 0x60 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10 , & mut payment_id, & mut payment_idx ) ; } ,
1090
+ 0x61 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10 , & mut payment_id, & mut payment_idx ) ; } ,
1091
+ 0x62 => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10 , & mut payment_id, & mut payment_idx ) ; } ,
1092
+ 0x63 => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10 , & mut payment_id, & mut payment_idx ) ; } ,
1093
+ 0x64 => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 10 , & mut payment_id, & mut payment_idx ) ; } ,
1094
+ 0x65 => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 10 , & mut payment_id, & mut payment_idx ) ; } ,
1095
+
1096
+ 0x68 => { send_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 1 , & mut payment_id, & mut payment_idx ) ; } ,
1097
+ 0x69 => { send_payment ( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 1 , & mut payment_id, & mut payment_idx ) ; } ,
1098
+ 0x6a => { send_payment ( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 1 , & mut payment_id, & mut payment_idx ) ; } ,
1099
+ 0x6b => { send_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 1 , & mut payment_id, & mut payment_idx ) ; } ,
1100
+ 0x6c => { send_hop_payment ( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, & nodes[ 2 ] , chan_b, 1 , & mut payment_id, & mut payment_idx ) ; } ,
1101
+ 0x6d => { send_hop_payment ( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, & nodes[ 0 ] , chan_a, 1 , & mut payment_id, & mut payment_idx ) ; } ,
1095
1102
1096
1103
0x80 => {
1097
1104
let max_feerate = last_htlc_clear_fee_a * FEE_SPIKE_BUFFER_FEE_INCREASE_MULTIPLE as u32 ;
@@ -1174,11 +1181,11 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
1174
1181
1175
1182
// Finally, make sure that at least one end of each channel can make a substantial payment
1176
1183
assert ! (
1177
- send_payment( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10_000_000 , & mut payment_id) ||
1178
- send_payment( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10_000_000 , & mut payment_id) ) ;
1184
+ send_payment( & nodes[ 0 ] , & nodes[ 1 ] , chan_a, 10_000_000 , & mut payment_id, & mut payment_idx ) ||
1185
+ send_payment( & nodes[ 1 ] , & nodes[ 0 ] , chan_a, 10_000_000 , & mut payment_id, & mut payment_idx ) ) ;
1179
1186
assert ! (
1180
- send_payment( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10_000_000 , & mut payment_id) ||
1181
- send_payment( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10_000_000 , & mut payment_id) ) ;
1187
+ send_payment( & nodes[ 1 ] , & nodes[ 2 ] , chan_b, 10_000_000 , & mut payment_id, & mut payment_idx ) ||
1188
+ send_payment( & nodes[ 2 ] , & nodes[ 1 ] , chan_b, 10_000_000 , & mut payment_id, & mut payment_idx ) ) ;
1182
1189
1183
1190
last_htlc_clear_fee_a = fee_est_a. ret_val . load ( atomic:: Ordering :: Acquire ) ;
1184
1191
last_htlc_clear_fee_b = fee_est_b. ret_val . load ( atomic:: Ordering :: Acquire ) ;
0 commit comments