Skip to content

Commit 65cbc9c

Browse files
Implement OnionMessageProvider for OnionMessenger
1 parent 8736b62 commit 65cbc9c

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

lightning/src/onion_message/messenger.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ pub struct OnionMessenger<Signer: Sign, K: Deref, L: Deref>
8686
{
8787
keys_manager: K,
8888
logger: L,
89-
pending_messages: Mutex<HashMap<PublicKey, Vec<msgs::OnionMessage>>>,
89+
pending_messages: Mutex<HashMap<PublicKey, VecDeque<msgs::OnionMessage>>>,
9090
secp_ctx: Secp256k1<secp256k1::All>,
9191
// Coming soon:
9292
// invoice_handler: InvoiceHandler,
@@ -170,8 +170,8 @@ impl<Signer: Sign, K: Deref, L: Deref> OnionMessenger<Signer, K, L>
170170
packet_payloads, packet_keys, prng_seed).map_err(|()| SendError::TooBigPacket)?;
171171

172172
let mut pending_per_peer_msgs = self.pending_messages.lock().unwrap();
173-
let pending_msgs = pending_per_peer_msgs.entry(introduction_node_id).or_insert(Vec::new());
174-
pending_msgs.push(
173+
let pending_msgs = pending_per_peer_msgs.entry(introduction_node_id).or_insert(VecDeque::new());
174+
pending_msgs.push_back(
175175
msgs::OnionMessage {
176176
blinding_point,
177177
onion_routing_packet: onion_packet,
@@ -181,7 +181,7 @@ impl<Signer: Sign, K: Deref, L: Deref> OnionMessenger<Signer, K, L>
181181
}
182182

183183
#[cfg(test)]
184-
pub(super) fn release_pending_msgs(&self) -> HashMap<PublicKey, Vec<msgs::OnionMessage>> {
184+
pub(super) fn release_pending_msgs(&self) -> HashMap<PublicKey, VecDeque<msgs::OnionMessage>> {
185185
let mut pending_msgs = self.pending_messages.lock().unwrap();
186186
let mut msgs = HashMap::new();
187187
core::mem::swap(&mut *pending_msgs, &mut msgs);
@@ -253,8 +253,8 @@ impl<Signer: Sign, K: Deref, L: Deref> OnionMessageHandler for OnionMessenger<Si
253253
};
254254

255255
let mut pending_per_peer_msgs = self.pending_messages.lock().unwrap();
256-
let pending_msgs = pending_per_peer_msgs.entry(next_node_id).or_insert(Vec::new());
257-
pending_msgs.push(
256+
let pending_msgs = pending_per_peer_msgs.entry(next_node_id).or_insert(VecDeque::new());
257+
pending_msgs.push_back(
258258
msgs::OnionMessage {
259259
blinding_point: match next_blinding_override {
260260
Some(blinding_point) => blinding_point,
@@ -295,6 +295,10 @@ impl<Signer: Sign, K: Deref, L: Deref> OnionMessageProvider for OnionMessenger<S
295295
L::Target: Logger,
296296
{
297297
fn next_onion_message_for_peer(&self, peer_node_id: PublicKey) -> Option<msgs::OnionMessage> {
298+
let mut pending_msgs = self.pending_messages.lock().unwrap();
299+
if let Some(msgs) = pending_msgs.get_mut(&peer_node_id) {
300+
return msgs.pop_front()
301+
}
298302
None
299303
}
300304
}

0 commit comments

Comments
 (0)