@@ -1538,7 +1538,9 @@ where
1538
1538
}
1539
1539
1540
1540
#[ 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
+
1542
1544
let mut message_recipients = self . message_recipients . lock ( ) . unwrap ( ) ;
1543
1545
let mut msgs = new_hash_map ( ) ;
1544
1546
// We don't want to disconnect the peers by removing them entirely from the original map, so we
@@ -1549,6 +1551,47 @@ where
1549
1551
msgs
1550
1552
}
1551
1553
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
+
1552
1595
fn enqueue_intercepted_event ( & self , event : Event ) {
1553
1596
const MAX_EVENTS_BUFFER_SIZE : usize = ( 1 << 10 ) * 256 ;
1554
1597
let mut pending_intercepted_msgs_events =
@@ -2104,43 +2147,7 @@ where
2104
2147
// enqueued in the handler by users, find a path to the corresponding blinded path's introduction
2105
2148
// node, and then enqueue the message for sending to the first peer in the full path.
2106
2149
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 ( ) ;
2144
2151
2145
2152
let mut message_recipients = self . message_recipients . lock ( ) . unwrap ( ) ;
2146
2153
message_recipients. get_mut ( & peer_node_id) . and_then ( |buffer| buffer. dequeue_message ( ) )
0 commit comments