From ae8ad6f26ae5acd9f5029e0c02754f09c0ce20a3 Mon Sep 17 00:00:00 2001 From: Thomas Coratger <60488569+tcoratger@users.noreply.github.com> Date: Mon, 11 Dec 2023 12:34:32 +0100 Subject: [PATCH] refactor(net): Improved Masking Function for Message IDs (#5724) --- crates/net/eth-wire/src/muxdemux.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/crates/net/eth-wire/src/muxdemux.rs b/crates/net/eth-wire/src/muxdemux.rs index 621eb64d9..6c4aaaf1a 100644 --- a/crates/net/eth-wire/src/muxdemux.rs +++ b/crates/net/eth-wire/src/muxdemux.rs @@ -163,13 +163,11 @@ impl MuxDemuxStream { } /// Masks message id with offset relative to the message id suffix reserved for capability - /// message ids. The p2p stream further masks the message id (todo: mask whole message id at - /// once to avoid copying message to mutate id byte or sink BytesMut). + /// message ids. The p2p stream further masks the message id fn mask_msg_id(&self, msg: Bytes) -> Bytes { - let mut masked_bytes = BytesMut::zeroed(msg.len()); - masked_bytes[0] = msg[0] + self.owner.relative_message_id_offset(); - masked_bytes[1..].copy_from_slice(&msg[1..]); - + let mut masked_bytes = BytesMut::with_capacity(msg.len()); + masked_bytes.extend_from_slice(&msg); + masked_bytes[0] += self.owner.relative_message_id_offset(); masked_bytes.freeze() } @@ -310,10 +308,9 @@ pub struct StreamClone { impl StreamClone { fn mask_msg_id(&self, msg: Bytes) -> Bytes { - let mut masked_bytes = BytesMut::zeroed(msg.len()); - masked_bytes[0] = msg[0] + self.cap.relative_message_id_offset(); - masked_bytes[1..].copy_from_slice(&msg[1..]); - + let mut masked_bytes = BytesMut::with_capacity(msg.len()); + masked_bytes.extend_from_slice(&msg); + masked_bytes[0] += self.cap.relative_message_id_offset(); masked_bytes.freeze() } }