mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 15:20:24 +01:00
Keep the same read buffer unless the last message was overly large
This avoids repeatedly deallocating-allocating a Vec for the peer read buffer after every message/header.
This commit is contained in:
parent
ae4ceb71a5
commit
eb17464e78
1 changed files with 3 additions and 2 deletions
|
@ -972,7 +972,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, CMH: Deref> P
|
||||||
if peer.pending_read_is_header {
|
if peer.pending_read_is_header {
|
||||||
let msg_len = try_potential_handleerror!(peer,
|
let msg_len = try_potential_handleerror!(peer,
|
||||||
peer.channel_encryptor.decrypt_length_header(&peer.pending_read_buffer[..]));
|
peer.channel_encryptor.decrypt_length_header(&peer.pending_read_buffer[..]));
|
||||||
peer.pending_read_buffer = Vec::with_capacity(msg_len as usize + 16);
|
if peer.pending_read_buffer.capacity() > 8192 { peer.pending_read_buffer = Vec::new(); }
|
||||||
peer.pending_read_buffer.resize(msg_len as usize + 16, 0);
|
peer.pending_read_buffer.resize(msg_len as usize + 16, 0);
|
||||||
if msg_len < 2 { // Need at least the message type tag
|
if msg_len < 2 { // Need at least the message type tag
|
||||||
return Err(PeerHandleError{ no_connection_possible: false });
|
return Err(PeerHandleError{ no_connection_possible: false });
|
||||||
|
@ -984,7 +984,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, CMH: Deref> P
|
||||||
assert!(msg_data.len() >= 2);
|
assert!(msg_data.len() >= 2);
|
||||||
|
|
||||||
// Reset read buffer
|
// Reset read buffer
|
||||||
peer.pending_read_buffer = [0; 18].to_vec();
|
if peer.pending_read_buffer.capacity() > 8192 { peer.pending_read_buffer = Vec::new(); }
|
||||||
|
peer.pending_read_buffer.resize(18, 0);
|
||||||
peer.pending_read_is_header = true;
|
peer.pending_read_is_header = true;
|
||||||
|
|
||||||
let mut reader = io::Cursor::new(&msg_data[..]);
|
let mut reader = io::Cursor::new(&msg_data[..]);
|
||||||
|
|
Loading…
Add table
Reference in a new issue