@@ -921,6 +921,17 @@ where
921
921
}
922
922
msgs
923
923
}
924
+
925
+ fn enqueue_event ( & self , event : Event ) {
926
+ const MAX_EVENTS_BUFFER_SIZE : usize = ( 1 << 10 ) * 256 ;
927
+ let mut pending_events = self . pending_events . lock ( ) . unwrap ( ) ;
928
+ let total_buffered_bytes: usize = pending_events
929
+ . iter ( )
930
+ . map ( |ev| ev. serialized_length ( ) )
931
+ . sum ( ) ;
932
+ if total_buffered_bytes >= MAX_EVENTS_BUFFER_SIZE { return }
933
+ pending_events. push ( event) ;
934
+ }
924
935
}
925
936
926
937
fn outbound_buffer_full ( peer_node_id : & PublicKey , buffer : & HashMap < PublicKey , OnionMessageRecipient > ) -> bool {
@@ -1035,7 +1046,7 @@ where
1035
1046
log_trace ! ( logger, "Forwarding an onion message to peer {}" , next_node_id) ;
1036
1047
} ,
1037
1048
_ if self . intercept_oms_for_offline_peers => {
1038
- self . pending_events . lock ( ) . unwrap ( ) . push (
1049
+ self . enqueue_event (
1039
1050
Event :: OnionMessageForOfflinePeer {
1040
1051
peer_node_id : next_node_id, message : onion_message
1041
1052
}
@@ -1063,7 +1074,7 @@ where
1063
1074
. or_insert_with ( || OnionMessageRecipient :: ConnectedPeer ( VecDeque :: new ( ) ) )
1064
1075
. mark_connected ( ) ;
1065
1076
if self . intercept_oms_for_offline_peers {
1066
- self . pending_events . lock ( ) . unwrap ( ) . push (
1077
+ self . enqueue_event (
1067
1078
Event :: OnionMessagePeerConnected { peer_node_id : * their_node_id }
1068
1079
) ;
1069
1080
}
0 commit comments