From 0d311dfc3cfefe33371694c93e086acae716ed1a Mon Sep 17 00:00:00 2001 From: Pawan Dhananjay Date: Mon, 16 Jun 2025 14:05:01 +0200 Subject: [PATCH] Send byrange responses in the correct requested range --- .../network_beacon_processor/rpc_methods.rs | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/beacon_node/network/src/network_beacon_processor/rpc_methods.rs b/beacon_node/network/src/network_beacon_processor/rpc_methods.rs index eca80af998d..4004305f83c 100644 --- a/beacon_node/network/src/network_beacon_processor/rpc_methods.rs +++ b/beacon_node/network/src/network_beacon_processor/rpc_methods.rs @@ -945,12 +945,18 @@ impl NetworkBeaconProcessor { match self.chain.get_blobs(&root) { Ok(blob_sidecar_list) => { for blob_sidecar in blob_sidecar_list.iter() { - blobs_sent += 1; - self.send_network_message(NetworkMessage::SendResponse { - peer_id, - inbound_request_id, - response: Response::BlobsByRange(Some(blob_sidecar.clone())), - }); + // Due to skip slots, blobs could be out of the range, we ensure they + // are in the range before sending + if blob_sidecar.slot() >= request_start_slot + && blob_sidecar.slot() < request_start_slot + req.count + { + blobs_sent += 1; + self.send_network_message(NetworkMessage::SendResponse { + peer_id, + inbound_request_id, + response: Response::BlobsByRange(Some(blob_sidecar.clone())), + }); + } } } Err(e) => { @@ -1058,14 +1064,20 @@ impl NetworkBeaconProcessor { for index in &req.columns { match self.chain.get_data_column(&root, index) { Ok(Some(data_column_sidecar)) => { - data_columns_sent += 1; - self.send_network_message(NetworkMessage::SendResponse { - peer_id, - inbound_request_id, - response: Response::DataColumnsByRange(Some( - data_column_sidecar.clone(), - )), - }); + // Due to skip slots, data columns could be out of the range, we ensure they + // are in the range before sending + if data_column_sidecar.slot() >= request_start_slot + && data_column_sidecar.slot() < request_start_slot + req.count + { + data_columns_sent += 1; + self.send_network_message(NetworkMessage::SendResponse { + peer_id, + inbound_request_id, + response: Response::DataColumnsByRange(Some( + data_column_sidecar.clone(), + )), + }); + } } Ok(None) => {} // no-op Err(e) => {