Skip to content

Commit 2a72f4f

Browse files
authored
Merge pull request #1994 from TheBlueMatt/2023-01-1916-followups
1916 Followups Part 1
2 parents 3bd395f + 0765600 commit 2a72f4f

14 files changed

+691
-409
lines changed

fuzz/src/full_stack.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
512512
},
513513
4 => {
514514
let final_value_msat = slice_to_be24(get_slice!(3)) as u64;
515-
let payment_params = PaymentParameters::from_node_id(get_pubkey!());
515+
let payment_params = PaymentParameters::from_node_id(get_pubkey!(), 42);
516516
let params = RouteParameters {
517517
payment_params,
518518
final_value_msat,
@@ -536,7 +536,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
536536
},
537537
15 => {
538538
let final_value_msat = slice_to_be24(get_slice!(3)) as u64;
539-
let payment_params = PaymentParameters::from_node_id(get_pubkey!());
539+
let payment_params = PaymentParameters::from_node_id(get_pubkey!(), 42);
540540
let params = RouteParameters {
541541
payment_params,
542542
final_value_msat,

fuzz/src/router.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,13 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
263263
let scorer = FixedPenaltyScorer::with_penalty(0);
264264
let random_seed_bytes: [u8; 32] = [get_slice!(1)[0]; 32];
265265
for target in node_pks.iter() {
266+
let final_value_msat = slice_to_be64(get_slice!(8));
267+
let final_cltv_expiry_delta = slice_to_be32(get_slice!(4));
266268
let route_params = RouteParameters {
267-
payment_params: PaymentParameters::from_node_id(*target).with_route_hints(last_hops.clone()),
268-
final_value_msat: slice_to_be64(get_slice!(8)),
269-
final_cltv_expiry_delta: slice_to_be32(get_slice!(4)),
269+
payment_params: PaymentParameters::from_node_id(*target, final_cltv_expiry_delta)
270+
.with_route_hints(last_hops.clone()),
271+
final_value_msat,
272+
final_cltv_expiry_delta,
270273
};
271274
let _ = find_route(&our_pubkey, &route_params, &net_graph,
272275
first_hops.map(|c| c.iter().collect::<Vec<_>>()).as_ref().map(|a| a.as_slice()),

lightning-invoice/src/payment.rs

+9-7
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,8 @@ where
422422
};
423423

424424
let payment_secret = Some(invoice.payment_secret().clone());
425-
let mut payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key())
425+
let mut payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key(),
426+
invoice.min_final_cltv_expiry_delta() as u32)
426427
.with_expiry_time(expiry_time_from_unix_epoch(&invoice).as_secs())
427428
.with_route_hints(invoice.route_hints());
428429
if let Some(features) = invoice.features() {
@@ -486,7 +487,7 @@ where
486487
};
487488

488489
let route_params = RouteParameters {
489-
payment_params: PaymentParameters::for_keysend(pubkey),
490+
payment_params: PaymentParameters::for_keysend(pubkey, final_cltv_expiry_delta),
490491
final_value_msat: amount_msats,
491492
final_cltv_expiry_delta,
492493
};
@@ -1377,7 +1378,7 @@ mod tests {
13771378
assert_eq!(*payer.attempts.borrow(), 1);
13781379

13791380
let retry = RouteParameters {
1380-
payment_params: PaymentParameters::for_keysend(pubkey),
1381+
payment_params: PaymentParameters::for_keysend(pubkey, final_cltv_expiry_delta),
13811382
final_value_msat,
13821383
final_cltv_expiry_delta,
13831384
};
@@ -1655,7 +1656,8 @@ mod tests {
16551656
}
16561657

16571658
fn retry_for_invoice(invoice: &Invoice) -> RouteParameters {
1658-
let mut payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key())
1659+
let mut payment_params = PaymentParameters::from_node_id(
1660+
invoice.recover_payee_pub_key(), invoice.min_final_cltv_expiry_delta() as u32)
16591661
.with_expiry_time(expiry_time_from_unix_epoch(invoice).as_secs())
16601662
.with_route_hints(invoice.route_hints());
16611663
if let Some(features) = invoice.features() {
@@ -2071,7 +2073,7 @@ mod tests {
20712073
cltv_expiry_delta: 100,
20722074
}],
20732075
],
2074-
payment_params: Some(PaymentParameters::from_node_id(nodes[1].node.get_our_node_id())),
2076+
payment_params: Some(PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 100)),
20752077
};
20762078
let router = ManualRouter(RefCell::new(VecDeque::new()));
20772079
router.expect_find_route(Ok(route.clone()));
@@ -2114,7 +2116,7 @@ mod tests {
21142116
cltv_expiry_delta: 100,
21152117
}],
21162118
],
2117-
payment_params: Some(PaymentParameters::from_node_id(nodes[1].node.get_our_node_id())),
2119+
payment_params: Some(PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 100)),
21182120
};
21192121
let router = ManualRouter(RefCell::new(VecDeque::new()));
21202122
router.expect_find_route(Ok(route.clone()));
@@ -2194,7 +2196,7 @@ mod tests {
21942196
cltv_expiry_delta: 100,
21952197
}]
21962198
],
2197-
payment_params: Some(PaymentParameters::from_node_id(nodes[2].node.get_our_node_id())),
2199+
payment_params: Some(PaymentParameters::from_node_id(nodes[2].node.get_our_node_id(), 100)),
21982200
};
21992201
let router = ManualRouter(RefCell::new(VecDeque::new()));
22002202
router.expect_find_route(Ok(route.clone()));

lightning-invoice/src/utils.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,8 @@ mod test {
725725
assert_eq!(invoice.route_hints()[0].0[0].htlc_minimum_msat, chan.inbound_htlc_minimum_msat);
726726
assert_eq!(invoice.route_hints()[0].0[0].htlc_maximum_msat, chan.inbound_htlc_maximum_msat);
727727

728-
let payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key())
728+
let payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key(),
729+
invoice.min_final_cltv_expiry_delta() as u32)
729730
.with_features(invoice.features().unwrap().clone())
730731
.with_route_hints(invoice.route_hints());
731732
let route_params = RouteParameters {
@@ -1088,7 +1089,8 @@ mod test {
10881089
assert_eq!(invoice.expiry_time(), Duration::from_secs(non_default_invoice_expiry_secs.into()));
10891090
assert!(!invoice.features().unwrap().supports_basic_mpp());
10901091

1091-
let payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key())
1092+
let payment_params = PaymentParameters::from_node_id(invoice.recover_payee_pub_key(),
1093+
invoice.min_final_cltv_expiry_delta() as u32)
10921094
.with_features(invoice.features().unwrap().clone())
10931095
.with_route_hints(invoice.route_hints());
10941096
let params = RouteParameters {

lightning/src/ln/channelmanager.rs

+12-8
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,10 @@ pub(crate) enum HTLCSource {
245245
first_hop_htlc_msat: u64,
246246
payment_id: PaymentId,
247247
payment_secret: Option<PaymentSecret>,
248+
/// Note that this is now "deprecated" - we write it for forwards (and read it for
249+
/// backwards) compatibility reasons, but prefer to use the data in the
250+
/// [`super::outbound_payment`] module, which stores per-payment data once instead of in
251+
/// each HTLC.
248252
payment_params: Option<PaymentParameters>,
249253
},
250254
}
@@ -2473,7 +2477,7 @@ where
24732477
self.pending_outbound_payments
24742478
.send_payment(payment_hash, payment_secret, payment_id, retry_strategy, route_params,
24752479
&self.router, self.list_usable_channels(), self.compute_inflight_htlcs(),
2476-
&self.entropy_source, &self.node_signer, best_block_height,
2480+
&self.entropy_source, &self.node_signer, best_block_height, &self.logger,
24772481
|path, payment_params, payment_hash, payment_secret, total_value, cur_height, payment_id, keysend_preimage, session_priv|
24782482
self.send_payment_along_path(path, payment_params, payment_hash, payment_secret, total_value, cur_height, payment_id, keysend_preimage, session_priv))
24792483
}
@@ -2489,7 +2493,7 @@ where
24892493
#[cfg(test)]
24902494
pub(crate) fn test_add_new_pending_payment(&self, payment_hash: PaymentHash, payment_secret: Option<PaymentSecret>, payment_id: PaymentId, route: &Route) -> Result<Vec<[u8; 32]>, PaymentSendFailure> {
24912495
let best_block_height = self.best_block.read().unwrap().height();
2492-
self.pending_outbound_payments.test_add_new_pending_payment(payment_hash, payment_secret, payment_id, route, Retry::Attempts(0), &self.entropy_source, best_block_height)
2496+
self.pending_outbound_payments.test_add_new_pending_payment(payment_hash, payment_secret, payment_id, route, None, &self.entropy_source, best_block_height)
24932497
}
24942498

24952499

@@ -7357,9 +7361,9 @@ where
73577361
hash_map::Entry::Vacant(entry) => {
73587362
let path_fee = path.get_path_fees();
73597363
entry.insert(PendingOutboundPayment::Retryable {
7360-
retry_strategy: Retry::Attempts(0),
7364+
retry_strategy: None,
73617365
attempts: PaymentAttempts::new(),
7362-
route_params: None,
7366+
payment_params: None,
73637367
session_privs: [session_priv_bytes].iter().map(|a| *a).collect(),
73647368
payment_hash: htlc.payment_hash,
73657369
payment_secret,
@@ -7871,7 +7875,7 @@ mod tests {
78717875

78727876
// Next, attempt a keysend payment and make sure it fails.
78737877
let route_params = RouteParameters {
7874-
payment_params: PaymentParameters::for_keysend(expected_route.last().unwrap().node.get_our_node_id()),
7878+
payment_params: PaymentParameters::for_keysend(expected_route.last().unwrap().node.get_our_node_id(), TEST_FINAL_CLTV),
78757879
final_value_msat: 100_000,
78767880
final_cltv_expiry_delta: TEST_FINAL_CLTV,
78777881
};
@@ -7964,7 +7968,7 @@ mod tests {
79647968

79657969
let _chan = create_chan_between_nodes(&nodes[0], &nodes[1]);
79667970
let route_params = RouteParameters {
7967-
payment_params: PaymentParameters::for_keysend(payee_pubkey),
7971+
payment_params: PaymentParameters::for_keysend(payee_pubkey, 40),
79687972
final_value_msat: 10_000,
79697973
final_cltv_expiry_delta: 40,
79707974
};
@@ -8009,7 +8013,7 @@ mod tests {
80098013

80108014
let _chan = create_chan_between_nodes(&nodes[0], &nodes[1]);
80118015
let route_params = RouteParameters {
8012-
payment_params: PaymentParameters::for_keysend(payee_pubkey),
8016+
payment_params: PaymentParameters::for_keysend(payee_pubkey, 40),
80138017
final_value_msat: 10_000,
80148018
final_cltv_expiry_delta: 40,
80158019
};
@@ -8574,7 +8578,7 @@ pub mod bench {
85748578
macro_rules! send_payment {
85758579
($node_a: expr, $node_b: expr) => {
85768580
let usable_channels = $node_a.list_usable_channels();
8577-
let payment_params = PaymentParameters::from_node_id($node_b.get_our_node_id())
8581+
let payment_params = PaymentParameters::from_node_id($node_b.get_our_node_id(), TEST_FINAL_CLTV)
85788582
.with_features($node_b.invoice_features());
85798583
let scorer = test_utils::TestScorer::with_penalty(0);
85808584
let seed = [3u8; 32];

0 commit comments

Comments
 (0)