@@ -37,7 +37,7 @@ use reth_rpc_eth_types::{
37
37
cache:: db:: { StateCacheDbRefMutWrapper , StateProviderTraitObjWrapper } ,
38
38
error:: { api:: FromEvmHalt , ensure_success, FromEthApiError } ,
39
39
simulate:: { self , EthSimulateError } ,
40
- EthApiError , RevertError , RpcInvalidTransactionError , StateCacheDb ,
40
+ EthApiError , RevertError , StateCacheDb ,
41
41
} ;
42
42
use reth_storage_api:: { BlockIdReader , ProviderTx } ;
43
43
use revm:: {
@@ -48,7 +48,7 @@ use revm::{
48
48
Database , DatabaseCommit ,
49
49
} ;
50
50
use revm_inspectors:: { access_list:: AccessListInspector , transfer:: TransferInspector } ;
51
- use tracing:: trace;
51
+ use tracing:: { trace, warn } ;
52
52
53
53
/// Result type for `eth_simulateV1` RPC method.
54
54
pub type SimulatedBlocksResult < N , E > = Result < Vec < SimulatedBlock < RpcBlock < N > > > , E > ;
@@ -728,11 +728,12 @@ pub trait Call:
728
728
DB : Database + DatabaseCommit + OverrideBlockHashes ,
729
729
EthApiError : From < <DB as Database >:: Error > ,
730
730
{
731
- if request. as_ref ( ) . gas_limit ( ) > Some ( self . call_gas_limit ( ) ) {
732
- // configured gas exceeds limit
733
- return Err (
734
- EthApiError :: InvalidTransaction ( RpcInvalidTransactionError :: GasTooHigh ) . into ( )
735
- )
731
+ if let Some ( requested_gas) = request. as_ref ( ) . gas_limit ( ) {
732
+ let global_gas_cap = self . call_gas_limit ( ) ;
733
+ if global_gas_cap != 0 && global_gas_cap < requested_gas {
734
+ warn ! ( target: "rpc::eth::call" , ?request, ?global_gas_cap, "Capping gas limit to global gas cap" ) ;
735
+ request. as_mut ( ) . set_gas_limit ( global_gas_cap) ;
736
+ }
736
737
}
737
738
738
739
// apply configured gas cap
0 commit comments