fix(rpc): return empty log set for invalid filter block ranges (#18112)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
Dharm Singh
2025-09-19 17:17:38 +05:30
committed by GitHub
parent 8aeebe10ff
commit d6160de610
2 changed files with 12 additions and 1 deletions

View File

@@ -145,7 +145,9 @@ where
Ok(())
}
/// Computes the block range based on the filter range and current block numbers
/// Computes the block range based on the filter range and current block numbers.
///
/// This returns `(min(best,from), min(best,to))`.
pub fn get_filter_block_range(
from_block: Option<u64>,
to_block: Option<u64>,

View File

@@ -500,8 +500,17 @@ where
.map(|num| self.provider().convert_block_number(num))
.transpose()?
.flatten();
if let Some(f) = from {
if f > info.best_number {
// start block higher than local head, can return empty
return Ok(Vec::new());
}
}
let (from_block_number, to_block_number) =
logs_utils::get_filter_block_range(from, to, start_block, info);
self.get_logs_in_block_range(filter, from_block_number, to_block_number, limits)
.await
}