Skip to content

Commit 55d6cb3

Browse files
Limit OnionMessenger event buffer size.
1 parent 1f22d24 commit 55d6cb3

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

lightning/src/onion_message/messenger.rs

+13-2
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,17 @@ where
10071007
}
10081008
msgs
10091009
}
1010+
1011+
fn enqueue_event(&self, event: Event) {
1012+
const MAX_EVENTS_BUFFER_SIZE: usize = (1 << 10) * 256;
1013+
let mut pending_events = self.pending_events.lock().unwrap();
1014+
let total_buffered_bytes: usize = pending_events
1015+
.iter()
1016+
.map(|ev| ev.serialized_length())
1017+
.sum();
1018+
if total_buffered_bytes >= MAX_EVENTS_BUFFER_SIZE { return }
1019+
pending_events.push(event);
1020+
}
10101021
}
10111022

10121023
fn outbound_buffer_full(peer_node_id: &PublicKey, buffer: &HashMap<PublicKey, OnionMessageRecipient>) -> bool {
@@ -1134,7 +1145,7 @@ where
11341145
log_trace!(logger, "Forwarding an onion message to peer {}", next_node_id);
11351146
},
11361147
_ if self.intercept_oms_for_offline_peers => {
1137-
self.pending_events.lock().unwrap().push(
1148+
self.enqueue_event(
11381149
Event::OnionMessageForOfflinePeer {
11391150
peer_node_id: next_node_id, message: onion_message
11401151
}
@@ -1162,7 +1173,7 @@ where
11621173
.or_insert_with(|| OnionMessageRecipient::ConnectedPeer(VecDeque::new()))
11631174
.mark_connected();
11641175
if self.intercept_oms_for_offline_peers {
1165-
self.pending_events.lock().unwrap().push(
1176+
self.enqueue_event(
11661177
Event::OnionMessagePeerConnected { peer_node_id: *their_node_id }
11671178
);
11681179
}

0 commit comments

Comments
 (0)