From b28783a0b5b537acb4891438adcf5f83c239256a Mon Sep 17 00:00:00 2001 From: Valentine Wallace Date: Mon, 22 Aug 2022 12:22:22 -0400 Subject: [PATCH] Implement OnionMessageProvider for OnionMessenger --- lightning/src/onion_message/messenger.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lightning/src/onion_message/messenger.rs b/lightning/src/onion_message/messenger.rs index 2684ab8b3..75eb4619b 100644 --- a/lightning/src/onion_message/messenger.rs +++ b/lightning/src/onion_message/messenger.rs @@ -86,7 +86,7 @@ pub struct OnionMessenger { keys_manager: K, logger: L, - pending_messages: Mutex>>, + pending_messages: Mutex>>, secp_ctx: Secp256k1, // Coming soon: // invoice_handler: InvoiceHandler, @@ -170,8 +170,8 @@ impl OnionMessenger packet_payloads, packet_keys, prng_seed).map_err(|()| SendError::TooBigPacket)?; let mut pending_per_peer_msgs = self.pending_messages.lock().unwrap(); - let pending_msgs = pending_per_peer_msgs.entry(introduction_node_id).or_insert(Vec::new()); - pending_msgs.push( + let pending_msgs = pending_per_peer_msgs.entry(introduction_node_id).or_insert_with(VecDeque::new); + pending_msgs.push_back( msgs::OnionMessage { blinding_point, onion_routing_packet: onion_packet, @@ -181,7 +181,7 @@ impl OnionMessenger } #[cfg(test)] - pub(super) fn release_pending_msgs(&self) -> HashMap> { + pub(super) fn release_pending_msgs(&self) -> HashMap> { let mut pending_msgs = self.pending_messages.lock().unwrap(); let mut msgs = HashMap::new(); core::mem::swap(&mut *pending_msgs, &mut msgs); @@ -253,8 +253,8 @@ impl OnionMessageHandler for OnionMessenger blinding_point, @@ -295,6 +295,10 @@ impl OnionMessageProvider for OnionMessenger Option { + let mut pending_msgs = self.pending_messages.lock().unwrap(); + if let Some(msgs) = pending_msgs.get_mut(&peer_node_id) { + return msgs.pop_front() + } None } } -- 2.39.5