mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix: return an error if block does nit exist (#7374)
This commit is contained in:
@ -546,7 +546,9 @@ async fn test_eth_logs_args() {
|
||||
let mut params = ArrayParams::default();
|
||||
params.insert( serde_json::json!({"blockHash":"0x58dc57ab582b282c143424bd01e8d923cddfdcda9455bad02a29522f6274a948"})).unwrap();
|
||||
|
||||
let _resp = client.request::<Vec<Log>, _>("eth_getLogs", params).await.unwrap();
|
||||
let resp = client.request::<Vec<Log>, _>("eth_getLogs", params).await;
|
||||
// block does not exist
|
||||
assert!(resp.is_err());
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
|
||||
@ -349,21 +349,31 @@ where
|
||||
async fn logs_for_filter(&self, filter: Filter) -> Result<Vec<Log>, FilterError> {
|
||||
match filter.block_option {
|
||||
FilterBlockOption::AtBlockHash(block_hash) => {
|
||||
// all matching logs in the block
|
||||
let block_number = self
|
||||
.provider
|
||||
.block_number_for_id(block_hash.into())?
|
||||
.ok_or_else(|| EthApiError::UnknownBlockNumber)?;
|
||||
|
||||
// we also need to ensure that the receipts are available and return an error if
|
||||
// not, in case the block hash been reorged
|
||||
let receipts = self
|
||||
.eth_cache
|
||||
.get_receipts(block_hash)
|
||||
.await?
|
||||
.ok_or_else(|| EthApiError::UnknownBlockNumber)?;
|
||||
|
||||
let mut all_logs = Vec::new();
|
||||
// all matching logs in the block, if it exists
|
||||
if let Some(block_number) = self.provider.block_number_for_id(block_hash.into())? {
|
||||
if let Some(receipts) = self.eth_cache.get_receipts(block_hash).await? {
|
||||
let filter = FilteredParams::new(Some(filter));
|
||||
logs_utils::append_matching_block_logs(
|
||||
&mut all_logs,
|
||||
&self.provider,
|
||||
&filter,
|
||||
(block_hash, block_number).into(),
|
||||
&receipts,
|
||||
false,
|
||||
)?;
|
||||
}
|
||||
}
|
||||
let filter = FilteredParams::new(Some(filter));
|
||||
logs_utils::append_matching_block_logs(
|
||||
&mut all_logs,
|
||||
&self.provider,
|
||||
&filter,
|
||||
(block_hash, block_number).into(),
|
||||
&receipts,
|
||||
false,
|
||||
)?;
|
||||
|
||||
Ok(all_logs)
|
||||
}
|
||||
FilterBlockOption::Range { from_block, to_block } => {
|
||||
|
||||
Reference in New Issue
Block a user