Skip to content

Commit 700e240

Browse files
prestwichclaude
andcommitted
fix(rpc): address review feedback on debug endpoints
- Document partial-move pattern in get_raw_receipts - Consolidate duplicate -32602 error code arms in DebugError - Fix resolve_header error mapping: use Resolve(e) instead of BlockNotFound(id) to preserve the distinction between "block not found" (-32001) and "storage layer failed" (-32000). The resolve_error_message helper already sanitizes DB errors to the opaque "server error" string, so no internals are leaked. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 53f6d59 commit 700e240

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

crates/rpc/src/debug/endpoints.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ where
325325

326326
let sealed = ctx.resolve_header(BlockId::Number(block_num.into())).map_err(|e| {
327327
tracing::warn!(error = %e, block_num, "header resolution failed");
328-
DebugError::BlockNotFound(id)
328+
DebugError::Resolve(e)
329329
})?;
330330

331331
let Some(sealed) = sealed else {
@@ -387,6 +387,9 @@ where
387387
let encoded = receipts
388388
.into_iter()
389389
.map(|cr| {
390+
// Compute bloom before moving logs out. `status` and
391+
// `cumulative_gas_used` are Copy, so they remain
392+
// accessible after the partial move of `logs`.
390393
let logs_bloom = cr.receipt.bloom();
391394
let logs: Vec<Log> = cr.receipt.logs.into_iter().map(|l| l.inner).collect();
392395
let receipt = Receipt {
@@ -438,7 +441,7 @@ where
438441

439442
let sealed = ctx.resolve_header(BlockId::Number(block_num.into())).map_err(|e| {
440443
tracing::warn!(error = %e, block_num, "header resolution failed");
441-
DebugError::BlockNotFound(id)
444+
DebugError::Resolve(e)
442445
})?;
443446

444447
let Some(sealed) = sealed else {

crates/rpc/src/debug/error.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,9 @@ impl ajj::IntoErrorPayload for DebugError {
4848
match self {
4949
Self::Cold(_) | Self::Hot(_) | Self::EvmHalt { .. } => -32000,
5050
Self::Resolve(r) => crate::eth::error::resolve_error_code(r),
51-
Self::InvalidTracerConfig => -32602,
51+
Self::InvalidTracerConfig | Self::RlpDecode(_) => -32602,
5252
Self::Unsupported(_) => -32601,
5353
Self::BlockNotFound(_) | Self::TransactionNotFound(_) => -32001,
54-
Self::RlpDecode(_) => -32602,
5554
Self::SenderRecovery => -32000,
5655
}
5756
}

0 commit comments

Comments
 (0)