Skip to content

Commit 3d8e9db

Browse files
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.
1 parent 3aaf055 commit 3d8e9db

File tree

6 files changed

+19
-6
lines changed

6 files changed

+19
-6
lines changed

fuzz/src/onion_message.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ struct TestAsyncPaymentsMessageHandler {}
122122

123123
impl AsyncPaymentsMessageHandler for TestAsyncPaymentsMessageHandler {
124124
fn handle_held_htlc_available(
125-
&self, _message: HeldHtlcAvailable, responder: Option<Responder>,
125+
&self, _message: HeldHtlcAvailable, _context: AsyncPaymentsContext,
126+
responder: Option<Responder>,
126127
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)> {
127128
let responder = match responder {
128129
Some(resp) => resp,

lightning/src/ln/channelmanager.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -12241,7 +12241,8 @@ where
1224112241
L::Target: Logger,
1224212242
{
1224312243
fn handle_held_htlc_available(
12244-
&self, _message: HeldHtlcAvailable, _responder: Option<Responder>
12244+
&self, _message: HeldHtlcAvailable, _context: AsyncPaymentsContext,
12245+
_responder: Option<Responder>
1224512246
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)> {
1224612247
None
1224712248
}

lightning/src/ln/peer_handler.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ impl OffersMessageHandler for IgnoringMessageHandler {
149149
}
150150
impl AsyncPaymentsMessageHandler for IgnoringMessageHandler {
151151
fn handle_held_htlc_available(
152-
&self, _message: HeldHtlcAvailable, _responder: Option<Responder>,
152+
&self, _message: HeldHtlcAvailable, _context: AsyncPaymentsContext,
153+
_responder: Option<Responder>,
153154
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)> {
154155
None
155156
}

lightning/src/onion_message/async_payments.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ pub trait AsyncPaymentsMessageHandler {
2828
/// Handle a [`HeldHtlcAvailable`] message. A [`ReleaseHeldHtlc`] should be returned to release
2929
/// the held funds.
3030
fn handle_held_htlc_available(
31-
&self, message: HeldHtlcAvailable, responder: Option<Responder>,
31+
&self, message: HeldHtlcAvailable, context: AsyncPaymentsContext,
32+
responder: Option<Responder>,
3233
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)>;
3334

3435
/// Handle a [`ReleaseHeldHtlc`] message. If authentication of the message succeeds, an HTLC

lightning/src/onion_message/functional_tests.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ struct TestAsyncPaymentsMessageHandler {}
8585

8686
impl AsyncPaymentsMessageHandler for TestAsyncPaymentsMessageHandler {
8787
fn handle_held_htlc_available(
88-
&self, _message: HeldHtlcAvailable, _responder: Option<Responder>,
88+
&self, _message: HeldHtlcAvailable, _context: AsyncPaymentsContext,
89+
_responder: Option<Responder>,
8990
) -> Option<(ReleaseHeldHtlc, ResponseInstruction)> {
9091
None
9192
}

lightning/src/onion_message/messenger.rs

+9-1
Original file line numberDiff line numberDiff line change
@@ -1646,8 +1646,16 @@ where
16461646
},
16471647
#[cfg(async_payments)]
16481648
ParsedOnionMessageContents::AsyncPayments(AsyncPaymentsMessage::HeldHtlcAvailable(msg)) => {
1649+
let context = match context {
1650+
Some(MessageContext::AsyncPayments(context)) => context,
1651+
Some(_) => {
1652+
debug_assert!(false, "Checked in peel_onion_message");
1653+
return
1654+
},
1655+
None => return,
1656+
};
16491657
let response_instructions = self.async_payments_handler.handle_held_htlc_available(
1650-
msg, responder
1658+
msg, context, responder
16511659
);
16521660
if let Some((msg, instructions)) = response_instructions {
16531661
let _ = self.handle_onion_message_response(msg, instructions);

0 commit comments

Comments
 (0)