diff --git a/src/eth_rpc/servers/eth_rpc.rs b/src/eth_rpc/servers/eth_rpc.rs index b70caeca4..ced2ddab1 100644 --- a/src/eth_rpc/servers/eth_rpc.rs +++ b/src/eth_rpc/servers/eth_rpc.rs @@ -4,8 +4,9 @@ use crate::{ client::{EthClient, KakarotTransactions, TransactionHashProvider}, eth_rpc::api::eth_api::EthApiServer, providers::eth_provider::{ - constant::MAX_PRIORITY_FEE_PER_GAS, error::EthApiError, BlockProvider, ChainProvider, GasProvider, LogProvider, - ReceiptProvider, StateProvider, TransactionProvider, + constant::MAX_PRIORITY_FEE_PER_GAS, + error::{EthApiError, TransactionError}, + BlockProvider, ChainProvider, GasProvider, LogProvider, ReceiptProvider, StateProvider, TransactionProvider, }, }; use jsonrpsee::core::{async_trait, RpcResult as Result}; @@ -258,17 +259,20 @@ where Err(EthApiError::Unsupported("eth_sendTransaction").into()) } - #[allow(unreachable_code)] #[tracing::instrument(skip_all, ret, err)] async fn send_raw_transaction(&self, bytes: Bytes) -> Result { tracing::info!("Serving eth_sendRawTransaction"); #[cfg(feature = "rpc_forwarding")] { let provider = ProviderBuilder::new().on_http(Url::parse(MAIN_RPC_URL.as_ref()).unwrap()); - let tx_hash = provider.send_raw_transaction(&bytes).await.expect("failed to send transaction"); + let tx_hash = provider + .send_raw_transaction(&bytes) + .await + .map_err(|e| EthApiError::Transaction(TransactionError::Broadcast(e.into())))?; return Ok(*tx_hash.tx_hash()); } + #[cfg(not(feature = "rpc_forwarding"))] Ok(self.eth_client.send_raw_transaction(bytes).await?) }