From: shaavan Date: Fri, 6 Sep 2024 12:21:37 +0000 (+0530) Subject: Add reply_path to BOLT12Invoices in Offers Flow X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=a4bf93610109c907a4a368069b3d0ace2604b602;p=rust-lightning Add reply_path to BOLT12Invoices in Offers Flow 1. Introduced reply_path in BOLT12Invoices to address a gap in error handling. Previously, if a BOLT12Invoice sent in the offers flow generated an Invoice Error, the payer had no way to send this error back to the payee. 2. By adding a reply_path to the Invoice Message, the payer can now communicate any errors back to the payee, ensuring better error handling and communication within the offers flow. --- diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs index c8597f8f0..993a320d1 100644 --- a/lightning/src/ln/channelmanager.rs +++ b/lightning/src/ln/channelmanager.rs @@ -10927,7 +10927,12 @@ where }; match response { - Ok(invoice) => Some((OffersMessage::Invoice(invoice), responder.respond())), + Ok(invoice) => { + let nonce = Nonce::from_entropy_source(&*self.entropy_source); + let hmac = payment_hash.hmac_for_offer_payment(nonce, expanded_key); + let context = MessageContext::Offers(OffersContext::InboundPayment { payment_hash, nonce, hmac }); + Some((OffersMessage::Invoice(invoice), responder.respond_with_reply_path(context))) + }, Err(error) => Some((OffersMessage::InvoiceError(error.into()), responder.respond())), } },