@@ -1538,7 +1538,9 @@ where
15381538 }
15391539
15401540 #[ cfg( test) ]
1541- pub ( super ) fn release_pending_msgs ( & self ) -> HashMap < PublicKey , VecDeque < OnionMessage > > {
1541+ pub ( crate ) fn release_pending_msgs ( & self ) -> HashMap < PublicKey , VecDeque < OnionMessage > > {
1542+ self . enqueue_messages_from_handlers ( ) ;
1543+
15421544 let mut message_recipients = self . message_recipients . lock ( ) . unwrap ( ) ;
15431545 let mut msgs = new_hash_map ( ) ;
15441546 // We don't want to disconnect the peers by removing them entirely from the original map, so we
@@ -1549,6 +1551,47 @@ where
15491551 msgs
15501552 }
15511553
1554+ // Pull pending messages from each onion message handler and enqueue them in the messenger.
1555+ fn enqueue_messages_from_handlers ( & self ) {
1556+ // Enqueue any initiating `OffersMessage`s to send.
1557+ for ( message, instructions) in self . offers_handler . release_pending_messages ( ) {
1558+ let _ = self . send_onion_message_internal (
1559+ message,
1560+ instructions,
1561+ format_args ! ( "when sending OffersMessage" ) ,
1562+ ) ;
1563+ }
1564+
1565+ #[ cfg( async_payments) ]
1566+ {
1567+ for ( message, instructions) in self . async_payments_handler . release_pending_messages ( ) {
1568+ let _ = self . send_onion_message_internal (
1569+ message,
1570+ instructions,
1571+ format_args ! ( "when sending AsyncPaymentsMessage" ) ,
1572+ ) ;
1573+ }
1574+ }
1575+
1576+ // Enqueue any initiating `DNSResolverMessage`s to send.
1577+ for ( message, instructions) in self . dns_resolver_handler . release_pending_messages ( ) {
1578+ let _ = self . send_onion_message_internal (
1579+ message,
1580+ instructions,
1581+ format_args ! ( "when sending DNSResolverMessage" ) ,
1582+ ) ;
1583+ }
1584+
1585+ // Enqueue any initiating `CustomMessage`s to send.
1586+ for ( message, instructions) in self . custom_handler . release_pending_custom_messages ( ) {
1587+ let _ = self . send_onion_message_internal (
1588+ message,
1589+ instructions,
1590+ format_args ! ( "when sending CustomMessage" ) ,
1591+ ) ;
1592+ }
1593+ }
1594+
15521595 fn enqueue_intercepted_event ( & self , event : Event ) {
15531596 const MAX_EVENTS_BUFFER_SIZE : usize = ( 1 << 10 ) * 256 ;
15541597 let mut pending_intercepted_msgs_events =
@@ -2104,43 +2147,7 @@ where
21042147 // enqueued in the handler by users, find a path to the corresponding blinded path's introduction
21052148 // node, and then enqueue the message for sending to the first peer in the full path.
21062149 fn next_onion_message_for_peer ( & self , peer_node_id : PublicKey ) -> Option < OnionMessage > {
2107- // Enqueue any initiating `OffersMessage`s to send.
2108- for ( message, instructions) in self . offers_handler . release_pending_messages ( ) {
2109- let _ = self . send_onion_message_internal (
2110- message,
2111- instructions,
2112- format_args ! ( "when sending OffersMessage" ) ,
2113- ) ;
2114- }
2115-
2116- #[ cfg( async_payments) ]
2117- {
2118- for ( message, instructions) in self . async_payments_handler . release_pending_messages ( ) {
2119- let _ = self . send_onion_message_internal (
2120- message,
2121- instructions,
2122- format_args ! ( "when sending AsyncPaymentsMessage" ) ,
2123- ) ;
2124- }
2125- }
2126-
2127- // Enqueue any initiating `DNSResolverMessage`s to send.
2128- for ( message, instructions) in self . dns_resolver_handler . release_pending_messages ( ) {
2129- let _ = self . send_onion_message_internal (
2130- message,
2131- instructions,
2132- format_args ! ( "when sending DNSResolverMessage" ) ,
2133- ) ;
2134- }
2135-
2136- // Enqueue any initiating `CustomMessage`s to send.
2137- for ( message, instructions) in self . custom_handler . release_pending_custom_messages ( ) {
2138- let _ = self . send_onion_message_internal (
2139- message,
2140- instructions,
2141- format_args ! ( "when sending CustomMessage" ) ,
2142- ) ;
2143- }
2150+ self . enqueue_messages_from_handlers ( ) ;
21442151
21452152 let mut message_recipients = self . message_recipients . lock ( ) . unwrap ( ) ;
21462153 message_recipients. get_mut ( & peer_node_id) . and_then ( |buffer| buffer. dequeue_message ( ) )
0 commit comments