Skip to content

Commit 0d311df

Browse files
committed
Send byrange responses in the correct requested range
1 parent 6135f41 commit 0d311df

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

beacon_node/network/src/network_beacon_processor/rpc_methods.rs

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -945,12 +945,18 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
945945
match self.chain.get_blobs(&root) {
946946
Ok(blob_sidecar_list) => {
947947
for blob_sidecar in blob_sidecar_list.iter() {
948-
blobs_sent += 1;
949-
self.send_network_message(NetworkMessage::SendResponse {
950-
peer_id,
951-
inbound_request_id,
952-
response: Response::BlobsByRange(Some(blob_sidecar.clone())),
953-
});
948+
// Due to skip slots, blobs could be out of the range, we ensure they
949+
// are in the range before sending
950+
if blob_sidecar.slot() >= request_start_slot
951+
&& blob_sidecar.slot() < request_start_slot + req.count
952+
{
953+
blobs_sent += 1;
954+
self.send_network_message(NetworkMessage::SendResponse {
955+
peer_id,
956+
inbound_request_id,
957+
response: Response::BlobsByRange(Some(blob_sidecar.clone())),
958+
});
959+
}
954960
}
955961
}
956962
Err(e) => {
@@ -1058,14 +1064,20 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
10581064
for index in &req.columns {
10591065
match self.chain.get_data_column(&root, index) {
10601066
Ok(Some(data_column_sidecar)) => {
1061-
data_columns_sent += 1;
1062-
self.send_network_message(NetworkMessage::SendResponse {
1063-
peer_id,
1064-
inbound_request_id,
1065-
response: Response::DataColumnsByRange(Some(
1066-
data_column_sidecar.clone(),
1067-
)),
1068-
});
1067+
// Due to skip slots, data columns could be out of the range, we ensure they
1068+
// are in the range before sending
1069+
if data_column_sidecar.slot() >= request_start_slot
1070+
&& data_column_sidecar.slot() < request_start_slot + req.count
1071+
{
1072+
data_columns_sent += 1;
1073+
self.send_network_message(NetworkMessage::SendResponse {
1074+
peer_id,
1075+
inbound_request_id,
1076+
response: Response::DataColumnsByRange(Some(
1077+
data_column_sidecar.clone(),
1078+
)),
1079+
});
1080+
}
10691081
}
10701082
Ok(None) => {} // no-op
10711083
Err(e) => {

0 commit comments

Comments
 (0)