Skip to content

Commit e62b5ec

Browse files
OnionMessenger: DRY extracting message context
We're about to add more onion message types, so this pre-emptively DRYs the code to extract the expected message context taken from the blinded path.
1 parent ee171fc commit e62b5ec

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

lightning/src/onion_message/messenger.rs

+18-20
Original file line numberDiff line numberDiff line change
@@ -1820,6 +1820,18 @@ where
18201820
{
18211821
fn handle_onion_message(&self, peer_node_id: PublicKey, msg: &OnionMessage) {
18221822
let logger = WithContext::from(&self.logger, Some(peer_node_id), None, None);
1823+
macro_rules! extract_expected_context {
1824+
($context: expr, $expected_context_type: path) => {
1825+
match $context {
1826+
Some($expected_context_type(context)) => context,
1827+
Some(_) => {
1828+
debug_assert!(false, "Checked in peel_onion_message");
1829+
return;
1830+
},
1831+
None => return,
1832+
}
1833+
};
1834+
}
18231835
match self.peel_onion_message(msg) {
18241836
Ok(PeeledOnion::Receive(message, context, reply_path)) => {
18251837
log_trace!(
@@ -1850,14 +1862,8 @@ where
18501862
ParsedOnionMessageContents::AsyncPayments(
18511863
AsyncPaymentsMessage::HeldHtlcAvailable(msg),
18521864
) => {
1853-
let context = match context {
1854-
Some(MessageContext::AsyncPayments(context)) => context,
1855-
Some(_) => {
1856-
debug_assert!(false, "Checked in peel_onion_message");
1857-
return;
1858-
},
1859-
None => return,
1860-
};
1865+
let context =
1866+
extract_expected_context!(context, MessageContext::AsyncPayments);
18611867
let response_instructions = self
18621868
.async_payments_handler
18631869
.handle_held_htlc_available(msg, context, responder);
@@ -1869,14 +1875,8 @@ where
18691875
ParsedOnionMessageContents::AsyncPayments(
18701876
AsyncPaymentsMessage::ReleaseHeldHtlc(msg),
18711877
) => {
1872-
let context = match context {
1873-
Some(MessageContext::AsyncPayments(context)) => context,
1874-
Some(_) => {
1875-
debug_assert!(false, "Checked in peel_onion_message");
1876-
return;
1877-
},
1878-
None => return,
1879-
};
1878+
let context =
1879+
extract_expected_context!(context, MessageContext::AsyncPayments);
18801880
self.async_payments_handler.handle_release_held_htlc(msg, context);
18811881
},
18821882
ParsedOnionMessageContents::DNSResolver(DNSResolverMessage::DNSSECQuery(
@@ -1891,10 +1891,8 @@ where
18911891
ParsedOnionMessageContents::DNSResolver(DNSResolverMessage::DNSSECProof(
18921892
msg,
18931893
)) => {
1894-
let context = match context {
1895-
Some(MessageContext::DNSResolver(context)) => context,
1896-
_ => return,
1897-
};
1894+
let context =
1895+
extract_expected_context!(context, MessageContext::DNSResolver);
18981896
self.dns_resolver_handler.handle_dnssec_proof(msg, context);
18991897
},
19001898
ParsedOnionMessageContents::Custom(msg) => {

0 commit comments

Comments
 (0)