@@ -16,7 +16,7 @@ use bitcoin::hashes::sha256::Hash as Sha256;
1616use bitcoin:: secp256k1:: { self , PublicKey , Scalar , Secp256k1 , SecretKey } ;
1717
1818use crate :: blinded_path:: { BlindedPath , IntroductionNode , NextMessageHop , NodeIdLookUp } ;
19- use crate :: blinded_path:: message:: { advance_path_by_one, ForwardNode , ForwardTlvs , ReceiveTlvs , MessageContext } ;
19+ use crate :: blinded_path:: message:: { advance_path_by_one, ForwardNode , ForwardTlvs , MessageContext , OffersContext , ReceiveTlvs } ;
2020use crate :: blinded_path:: utils;
2121use crate :: events:: { Event , EventHandler , EventsProvider } ;
2222use crate :: sign:: { EntropySource , NodeSigner , Recipient } ;
@@ -768,7 +768,7 @@ pub trait CustomOnionMessageHandler {
768768 /// Called with the custom message that was received, returning a response to send, if any.
769769 ///
770770 /// The returned [`Self::CustomMessage`], if any, is enqueued to be sent by [`OnionMessenger`].
771- fn handle_custom_message ( & self , message : Self :: CustomMessage , responder : Option < Responder > ) -> ResponseInstruction < Self :: CustomMessage > ;
771+ fn handle_custom_message ( & self , message : Self :: CustomMessage , context : Option < Vec < u8 > > , responder : Option < Responder > ) -> ResponseInstruction < Self :: CustomMessage > ;
772772
773773 /// Read a custom message of type `message_type` from `buffer`, returning `Ok(None)` if the
774774 /// message type is unknown.
@@ -1446,7 +1446,7 @@ where
14461446 fn handle_onion_message ( & self , peer_node_id : & PublicKey , msg : & OnionMessage ) {
14471447 let logger = WithContext :: from ( & self . logger , Some ( * peer_node_id) , None , None ) ;
14481448 match self . peel_onion_message ( msg) {
1449- Ok ( PeeledOnion :: Receive ( message, _context , reply_path) ) => {
1449+ Ok ( PeeledOnion :: Receive ( message, context , reply_path) ) => {
14501450 log_trace ! (
14511451 logger,
14521452 "Received an onion message with {} reply_path: {:?}" ,
@@ -1455,7 +1455,15 @@ where
14551455 let responder = reply_path. map ( Responder :: new) ;
14561456 match message {
14571457 ParsedOnionMessageContents :: Offers ( msg) => {
1458- let response_instructions = self . offers_handler . handle_message ( msg, responder) ;
1458+ let context = match context {
1459+ None => OffersContext :: Unknown { } ,
1460+ Some ( MessageContext :: Offers ( context) ) => context,
1461+ Some ( MessageContext :: Custom ( _) ) => {
1462+ debug_assert ! ( false , "Shouldn't have triggered this case." ) ;
1463+ return
1464+ }
1465+ } ;
1466+ let response_instructions = self . offers_handler . handle_message ( msg, context, responder) ;
14591467 let _ = self . handle_onion_message_response ( response_instructions) ;
14601468 } ,
14611469 #[ cfg( async_payments) ]
@@ -1470,7 +1478,15 @@ where
14701478 self . async_payments_handler . release_held_htlc ( msg) ;
14711479 } ,
14721480 ParsedOnionMessageContents :: Custom ( msg) => {
1473- let response_instructions = self . custom_handler . handle_custom_message ( msg, responder) ;
1481+ let context = match context {
1482+ None => None ,
1483+ Some ( MessageContext :: Custom ( data) ) => Some ( data) ,
1484+ Some ( MessageContext :: Offers ( _) ) => {
1485+ debug_assert ! ( false , "Shouldn't have triggered this case." ) ;
1486+ return
1487+ }
1488+ } ;
1489+ let response_instructions = self . custom_handler . handle_custom_message ( msg, context, responder) ;
14741490 let _ = self . handle_onion_message_response ( response_instructions) ;
14751491 } ,
14761492 }
0 commit comments