From b480e92259cf6d3b3c835617467070e4be2ab227 Mon Sep 17 00:00:00 2001 From: Bryan Stitt Date: Thu, 9 Mar 2023 09:32:30 -0800 Subject: [PATCH] don't panic if param is not set --- web3_proxy/src/app/mod.rs | 4 +++- web3_proxy/src/block_number.rs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/web3_proxy/src/app/mod.rs b/web3_proxy/src/app/mod.rs index 6278b836..aa4677e7 100644 --- a/web3_proxy/src/app/mod.rs +++ b/web3_proxy/src/app/mod.rs @@ -1493,7 +1493,9 @@ impl Web3ProxyApp { match &request.params { Some(serde_json::Value::Array(params)) => { // TODO: make a struct and use serde conversion to clean this up - if params.len() != 1 || !params[0].is_string() { + if params.len() != 1 + || !params.get(0).map(|x| x.is_string()).unwrap_or(false) + { // TODO: what error code? return Ok(( JsonRpcForwardedResponse::from_str( diff --git a/web3_proxy/src/block_number.rs b/web3_proxy/src/block_number.rs index bfb39299..82741d49 100644 --- a/web3_proxy/src/block_number.rs +++ b/web3_proxy/src/block_number.rs @@ -177,7 +177,9 @@ pub async fn block_needed( // TODO: think about this more // TODO: jsonrpc has a specific code for this // TODO: this shouldn't be a 500. this should be a 400. 500 will make haproxy retry a bunch - let obj = params[0] + let obj = params + .get_mut(0) + .ok_or_else(|| anyhow::anyhow!("invalid format. no params"))? .as_object_mut() .ok_or_else(|| anyhow::anyhow!("invalid format"))?;