@@ -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