From 7a7093fecf04048d4509d2acacb2654abb9b3e99 Mon Sep 17 00:00:00 2001 From: Roman Dmitrienko Date: Thu, 1 Aug 2024 16:19:07 +0300 Subject: [PATCH 1/2] Add preimage argument to SpontaneousPayment::send(). --- bindings/ldk_node.udl | 2 +- src/payment/spontaneous.rs | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bindings/ldk_node.udl b/bindings/ldk_node.udl index 5cff3a6b5..50c3cc704 100644 --- a/bindings/ldk_node.udl +++ b/bindings/ldk_node.udl @@ -136,7 +136,7 @@ interface Bolt12Payment { interface SpontaneousPayment { [Throws=NodeError] - PaymentId send(u64 amount_msat, PublicKey node_id, sequence custom_tlvs); + PaymentId send(u64 amount_msat, PublicKey node_id, sequence custom_tlvs, PaymentPreimage? preimage); [Throws=NodeError] void send_probes(u64 amount_msat, PublicKey node_id); }; diff --git a/src/payment/spontaneous.rs b/src/payment/spontaneous.rs index 9efb8fefd..192565f40 100644 --- a/src/payment/spontaneous.rs +++ b/src/payment/spontaneous.rs @@ -44,13 +44,15 @@ impl SpontaneousPayment { /// Send a spontaneous, aka. "keysend", payment pub fn send( &self, amount_msat: u64, node_id: PublicKey, custom_tlvs: Vec, + preimage: Option, ) -> Result { let rt_lock = self.runtime.read().unwrap(); if rt_lock.is_none() { return Err(Error::NotRunning); } - let payment_preimage = PaymentPreimage(self.keys_manager.get_secure_random_bytes()); + let payment_preimage = preimage + .unwrap_or_else(|| PaymentPreimage(self.keys_manager.get_secure_random_bytes())); let payment_hash = PaymentHash::from(payment_preimage); let payment_id = PaymentId(payment_hash.0); From 727efe9638657160fb7a67d1c32618f81c2cb1b8 Mon Sep 17 00:00:00 2001 From: Roman Dmitrienko Date: Thu, 1 Aug 2024 16:23:59 +0300 Subject: [PATCH 2/2] Fix test. --- tests/common/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/common/mod.rs b/tests/common/mod.rs index a85aa3032..272d9f61e 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -699,7 +699,7 @@ pub(crate) fn do_channel_full_cycle( let tlv2 = TlvEntry { r#type: 131075, value: vec![0xaa, 0xbb] }; let keysend_payment_id = node_a .spontaneous_payment() - .send(keysend_amount_msat, node_b.node_id(), vec![tlv1, tlv2]) + .send(keysend_amount_msat, node_b.node_id(), vec![tlv1, tlv2], None) .unwrap(); expect_event!(node_a, PaymentSuccessful); let received_keysend_amount = match node_b.wait_next_event() {