From 467f6f919995a6f74ff4460cbece584ba5af1935 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Tue, 11 Jul 2023 02:55:09 +0200 Subject: [PATCH] fix: check if value is bool (#3708) --- crates/rpc/rpc-types/src/eth/pubsub.rs | 10 +++++++--- crates/rpc/rpc/src/eth/pubsub.rs | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/crates/rpc/rpc-types/src/eth/pubsub.rs b/crates/rpc/rpc-types/src/eth/pubsub.rs index f027037c17..e363cb754c 100644 --- a/crates/rpc/rpc-types/src/eth/pubsub.rs +++ b/crates/rpc/rpc-types/src/eth/pubsub.rs @@ -104,8 +104,8 @@ pub enum Params { None, /// Log parameters. Logs(Box), - /// New pending transaction parameters. - NewPendingTransactions(bool), + /// Boolean parameter for new pending transactions. + Bool(bool), } impl Serialize for Params { @@ -116,7 +116,7 @@ impl Serialize for Params { match self { Params::None => (&[] as &[serde_json::Value]).serialize(serializer), Params::Logs(logs) => logs.serialize(serializer), - Params::NewPendingTransactions(full) => full.serialize(serializer), + Params::Bool(full) => full.serialize(serializer), } } } @@ -132,6 +132,10 @@ impl<'a> Deserialize<'a> for Params { return Ok(Params::None) } + if let Some(val) = v.as_bool() { + return Ok(Params::Bool(val)) + } + serde_json::from_value(v) .map(|f| Params::Logs(Box::new(f))) .map_err(|e| D::Error::custom(format!("Invalid Pub-Sub parameters: {e}"))) diff --git a/crates/rpc/rpc/src/eth/pubsub.rs b/crates/rpc/rpc/src/eth/pubsub.rs index aa5dd7363f..a669300113 100644 --- a/crates/rpc/rpc/src/eth/pubsub.rs +++ b/crates/rpc/rpc/src/eth/pubsub.rs @@ -124,7 +124,7 @@ where SubscriptionKind::NewPendingTransactions => { if let Some(params) = params { match params { - Params::NewPendingTransactions(true) => { + Params::Bool(true) => { // full transaction objects requested let stream = pubsub.full_pending_transaction_stream().map(|tx| { EthSubscriptionResult::FullTransaction(Box::new( @@ -135,7 +135,7 @@ where }); return pipe_from_stream(accepted_sink, stream).await } - Params::NewPendingTransactions(false) | Params::None => { + Params::Bool(false) | Params::None => { // only hashes requested } Params::Logs(_) => {