Skip to content

Commit 98d2356

Browse files
Test utils: update onion messenger message release
Previously, the test-only method OnionMessenger::release_pending_msgs would not release a message if it was pending in e.g. the OffersMessageHandler but not in the messenger's own queue. Update this to pull pending messages from all handlers before releasing pending messages.
1 parent 3874612 commit 98d2356

File tree

1 file changed

+45
-38
lines changed

1 file changed

+45
-38
lines changed

lightning/src/onion_message/messenger.rs

Lines changed: 45 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)