@@ -587,16 +587,11 @@ where
587587 a_tor_only. cmp ( b_tor_only) . then ( a_channels. cmp ( b_channels) . reverse ( ) )
588588 } ) ;
589589
590+ let entropy = & * * entropy_source;
590591 let paths = peer_info
591592 . into_iter ( )
592593 . map ( |( peer, _, _) | {
593- BlindedMessagePath :: new (
594- & [ peer] ,
595- recipient,
596- context. clone ( ) ,
597- & * * entropy_source,
598- secp_ctx,
599- )
594+ BlindedMessagePath :: new ( & [ peer] , recipient, context. clone ( ) , entropy, secp_ctx)
600595 } )
601596 . take ( MAX_PATHS )
602597 . collect :: < Result < Vec < _ > , _ > > ( ) ;
@@ -1050,32 +1045,27 @@ where
10501045 let blinding_factor = {
10511046 let mut hmac = HmacEngine :: < Sha256 > :: new ( b"blinded_node_id" ) ;
10521047 hmac. input ( control_tlvs_ss. as_ref ( ) ) ;
1053- Hmac :: from_engine ( hmac) . to_byte_array ( )
1048+ let hmac = Hmac :: from_engine ( hmac) . to_byte_array ( ) ;
1049+ Scalar :: from_be_bytes ( hmac) . unwrap ( )
10541050 } ;
1055- match node_signer. ecdh (
1056- Recipient :: Node ,
1057- & msg. onion_routing_packet . public_key ,
1058- Some ( & Scalar :: from_be_bytes ( blinding_factor) . unwrap ( ) ) ,
1059- ) {
1051+ let packet_pubkey = & msg. onion_routing_packet . public_key ;
1052+ match node_signer. ecdh ( Recipient :: Node , packet_pubkey, Some ( & blinding_factor) ) {
10601053 Ok ( ss) => ss. secret_bytes ( ) ,
10611054 Err ( ( ) ) => {
10621055 log_trace ! ( logger, "Failed to compute onion packet shared secret" ) ;
10631056 return Err ( ( ) ) ;
10641057 } ,
10651058 }
10661059 } ;
1067- match onion_utils:: decode_next_untagged_hop (
1060+ let next_hop = onion_utils:: decode_next_untagged_hop (
10681061 onion_decode_ss,
10691062 & msg. onion_routing_packet . hop_data [ ..] ,
10701063 msg. onion_routing_packet . hmac ,
10711064 ( control_tlvs_ss, custom_handler. deref ( ) , logger. deref ( ) ) ,
1072- ) {
1065+ ) ;
1066+ match next_hop {
10731067 Ok ( (
1074- Payload :: Receive :: <
1075- ParsedOnionMessageContents <
1076- <<CMH as Deref >:: Target as CustomOnionMessageHandler >:: CustomMessage ,
1077- > ,
1078- > {
1068+ Payload :: Receive {
10791069 message,
10801070 control_tlvs : ReceiveControlTlvs :: Unblinded ( ReceiveTlvs { context } ) ,
10811071 reply_path,
@@ -1117,11 +1107,10 @@ where
11171107 // unwrapping the onion layers to get to the final payload. Since we don't have the option
11181108 // of creating blinded paths with dummy hops currently, we should be ok to not handle this
11191109 // for now.
1120- let new_pubkey = match onion_utils:: next_hop_pubkey (
1121- & secp_ctx,
1122- msg. onion_routing_packet . public_key ,
1123- & onion_decode_ss,
1124- ) {
1110+ let packet_pubkey = msg. onion_routing_packet . public_key ;
1111+ let new_pubkey_opt =
1112+ onion_utils:: next_hop_pubkey ( & secp_ctx, packet_pubkey, & onion_decode_ss) ;
1113+ let new_pubkey = match new_pubkey_opt {
11251114 Ok ( pk) => pk,
11261115 Err ( e) => {
11271116 log_trace ! ( logger, "Failed to compute next hop packet pubkey: {}" , e) ;
@@ -1406,14 +1395,14 @@ where
14061395 . map_err ( |_| SendError :: GetNodeIdFailed ) ?;
14071396 let secp_ctx = & self . secp_ctx ;
14081397
1409- let peers = self
1410- . message_recipients
1411- . lock ( )
1412- . unwrap ( )
1413- . iter ( )
1414- . filter ( |( _ , peer ) | matches! ( peer , OnionMessageRecipient :: ConnectedPeer ( _ ) ) )
1415- . map ( | ( node_id , _ ) | * node_id )
1416- . collect :: < Vec <_>> ( ) ;
1398+ let peers = {
1399+ let message_recipients = self . message_recipients . lock ( ) . unwrap ( ) ;
1400+ message_recipients
1401+ . iter ( )
1402+ . filter ( | ( _ , peer ) | matches ! ( peer , OnionMessageRecipient :: ConnectedPeer ( _ ) ) )
1403+ . map ( |( node_id , _ ) | * node_id )
1404+ . collect :: < Vec < _ > > ( )
1405+ } ;
14171406
14181407 self . message_router
14191408 . create_blinded_paths ( recipient, context, peers, secp_ctx)
@@ -1627,10 +1616,9 @@ where
16271616 if num_peer_connecteds <= 1 {
16281617 for event in peer_connecteds {
16291618 if handler ( event) . await . is_ok ( ) {
1630- self . pending_peer_connected_events
1631- . lock( )
1632- . unwrap( )
1633- . drain( ..num_peer_connecteds) ;
1619+ let mut pending_peer_connected_events =
1620+ self . pending_peer_connected_events . lock ( ) . unwrap ( ) ;
1621+ pending_peer_connected_events. drain ( ..num_peer_connecteds) ;
16341622 } else {
16351623 // We failed handling the event. Return to have it eventually replayed.
16361624 self . pending_events_processor . store ( false , Ordering :: Release ) ;
@@ -1988,12 +1976,13 @@ where
19881976 & self , their_node_id : PublicKey , init : & msgs:: Init , _inbound : bool ,
19891977 ) -> Result < ( ) , ( ) > {
19901978 if init. features . supports_onion_messages ( ) {
1991- self . message_recipients
1992- . lock( )
1993- . unwrap( )
1994- . entry( their_node_id)
1995- . or_insert_with( || OnionMessageRecipient :: ConnectedPeer ( VecDeque :: new( ) ) )
1996- . mark_connected( ) ;
1979+ {
1980+ let mut message_recipients = self . message_recipients . lock ( ) . unwrap ( ) ;
1981+ message_recipients
1982+ . entry ( their_node_id)
1983+ . or_insert_with ( || OnionMessageRecipient :: ConnectedPeer ( VecDeque :: new ( ) ) )
1984+ . mark_connected ( ) ;
1985+ }
19971986 if self . intercept_messages_for_offline_peers {
19981987 let mut pending_peer_connected_events =
19991988 self . pending_peer_connected_events . lock ( ) . unwrap ( ) ;
@@ -2090,11 +2079,8 @@ where
20902079 ) ;
20912080 }
20922081
2093- self . message_recipients
2094- . lock( )
2095- . unwrap( )
2096- . get_mut( & peer_node_id)
2097- . and_then( |buffer| buffer. dequeue_message( ) )
2082+ let mut message_recipients = self . message_recipients . lock ( ) . unwrap ( ) ;
2083+ message_recipients. get_mut ( & peer_node_id) . and_then ( |buffer| buffer. dequeue_message ( ) )
20982084 }
20992085}
21002086
0 commit comments