From 20ed70b1c3386fdaa73883a3ec32bb457e66452c Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Fri, 30 Jun 2023 13:40:43 +0200 Subject: [PATCH] fix: always return logs of single block range query (#3497) --- crates/rpc/rpc/src/eth/filter.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/rpc/rpc/src/eth/filter.rs b/crates/rpc/rpc/src/eth/filter.rs index 47bddaa98e..e7b3973079 100644 --- a/crates/rpc/rpc/src/eth/filter.rs +++ b/crates/rpc/rpc/src/eth/filter.rs @@ -369,6 +369,8 @@ where let address_filter = FilteredParams::address_filter(&filter.address); let topics_filter = FilteredParams::topics_filter(&topics); + let is_multi_block_range = from_block != to_block; + // loop over the range of new blocks and check logs if the filter matches the log's bloom // filter for (from, to) in @@ -401,8 +403,9 @@ where false, ); - // size check - if all_logs.len() > self.max_logs_per_response { + // size check but only if range is multiple blocks, so we always return all + // logs of a single block + if is_multi_block_range && all_logs.len() > self.max_logs_per_response { return Err(FilterError::QueryExceedsMaxResults( self.max_logs_per_response, ))