]> git.bitcoin.ninja Git - rust-lightning/commitdiff
Suggest a socket read buffer of 4KiB to limit message count
authorMatt Corallo <git@bluematt.me>
Wed, 1 Feb 2023 21:09:46 +0000 (21:09 +0000)
committerMatt Corallo <git@bluematt.me>
Thu, 9 Feb 2023 15:40:43 +0000 (15:40 +0000)
...and switch the same in `lightning-net-tokio`

lightning-net-tokio/src/lib.rs
lightning/src/ln/peer_handler.rs

index 9616e0db61d437285361ac6c33c36b664a60eed2..b259f77eff8f9ace67fec3b2a666122b0ae3c12a 100644 (file)
@@ -176,8 +176,9 @@ impl Connection {
                let (event_waker, event_receiver) = mpsc::channel(1);
                tokio::spawn(Self::poll_event_process(peer_manager.clone(), event_receiver));
 
-               // 8KB is nice and big but also should never cause any issues with stack overflowing.
-               let mut buf = [0; 8192];
+               // 4KiB is nice and big without handling too many messages all at once, giving other peers
+               // a chance to do some work.
+               let mut buf = [0; 4096];
 
                let mut our_descriptor = SocketDescriptor::new(us.clone());
                // An enum describing why we did/are disconnecting:
index cecf4332e291c87893e761ec1eed18490abb70c5..f24061726553f564c6613f9aaf4e437e8b127c70 100644 (file)
@@ -1005,6 +1005,9 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
        /// [`send_data`] call on this descriptor has `resume_read` set (preventing DoS issues in the
        /// send buffer).
        ///
+       /// In order to avoid processing too many messages at once per peer, `data` should be on the
+       /// order of 4KiB.
+       ///
        /// [`send_data`]: SocketDescriptor::send_data
        /// [`process_events`]: PeerManager::process_events
        pub fn read_event(&self, peer_descriptor: &mut Descriptor, data: &[u8]) -> Result<bool, PeerHandleError> {