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); 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() {