mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-24 06:57:53 +01:00
Add handle_held_htlc_available MessageContext param
Needed to authenticate that the held_htlc_available message is being sent over a reply path that we originally created and that isn't expired before we reply with release_held_htlc. This context will be used in upcoming commits when we add support for async receive.
This commit is contained in:
parent
da8cb9a71d
commit
0611e6065b
6 changed files with 19 additions and 6 deletions
|
@ -122,7 +122,8 @@ struct TestAsyncPaymentsMessageHandler {}
|
|||
|
||||
impl AsyncPaymentsMessageHandler for TestAsyncPaymentsMessageHandler {
|
||||
fn handle_held_htlc_available(
|
||||
&self, _message: HeldHtlcAvailable, responder: Option<Responder>,
|
||||
&self, _message: HeldHtlcAvailable, _context: AsyncPaymentsContext,
|
||||
responder: Option<Responder>,
|
||||
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)> {
|
||||
let responder = match responder {
|
||||
Some(resp) => resp,
|
||||
|
|
|
@ -12166,7 +12166,8 @@ where
|
|||
L::Target: Logger,
|
||||
{
|
||||
fn handle_held_htlc_available(
|
||||
&self, _message: HeldHtlcAvailable, _responder: Option<Responder>
|
||||
&self, _message: HeldHtlcAvailable, _context: AsyncPaymentsContext,
|
||||
_responder: Option<Responder>
|
||||
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)> {
|
||||
None
|
||||
}
|
||||
|
|
|
@ -149,7 +149,8 @@ impl OffersMessageHandler for IgnoringMessageHandler {
|
|||
}
|
||||
impl AsyncPaymentsMessageHandler for IgnoringMessageHandler {
|
||||
fn handle_held_htlc_available(
|
||||
&self, _message: HeldHtlcAvailable, _responder: Option<Responder>,
|
||||
&self, _message: HeldHtlcAvailable, _context: AsyncPaymentsContext,
|
||||
_responder: Option<Responder>,
|
||||
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)> {
|
||||
None
|
||||
}
|
||||
|
|
|
@ -28,7 +28,8 @@ pub trait AsyncPaymentsMessageHandler {
|
|||
/// Handle a [`HeldHtlcAvailable`] message. A [`ReleaseHeldHtlc`] should be returned to release
|
||||
/// the held funds.
|
||||
fn handle_held_htlc_available(
|
||||
&self, message: HeldHtlcAvailable, responder: Option<Responder>,
|
||||
&self, message: HeldHtlcAvailable, context: AsyncPaymentsContext,
|
||||
responder: Option<Responder>,
|
||||
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)>;
|
||||
|
||||
/// Handle a [`ReleaseHeldHtlc`] message. If authentication of the message succeeds, an HTLC
|
||||
|
|
|
@ -85,7 +85,8 @@ struct TestAsyncPaymentsMessageHandler {}
|
|||
|
||||
impl AsyncPaymentsMessageHandler for TestAsyncPaymentsMessageHandler {
|
||||
fn handle_held_htlc_available(
|
||||
&self, _message: HeldHtlcAvailable, _responder: Option<Responder>,
|
||||
&self, _message: HeldHtlcAvailable, _context: AsyncPaymentsContext,
|
||||
_responder: Option<Responder>,
|
||||
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)> {
|
||||
None
|
||||
}
|
||||
|
|
|
@ -1646,8 +1646,16 @@ where
|
|||
},
|
||||
#[cfg(async_payments)]
|
||||
ParsedOnionMessageContents::AsyncPayments(AsyncPaymentsMessage::HeldHtlcAvailable(msg)) => {
|
||||
let context = match context {
|
||||
Some(MessageContext::AsyncPayments(context)) => context,
|
||||
Some(_) => {
|
||||
debug_assert!(false, "Checked in peel_onion_message");
|
||||
return
|
||||
},
|
||||
None => return,
|
||||
};
|
||||
let response_instructions = self.async_payments_handler.handle_held_htlc_available(
|
||||
msg, responder
|
||||
msg, context, responder
|
||||
);
|
||||
if let Some((msg, instructions)) = response_instructions {
|
||||
let _ = self.handle_onion_message_response(msg, instructions);
|
||||
|
|
Loading…
Add table
Reference in a new issue