From 6d13d42e713f2bf6558cecd04284d119b19f4e74 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 15 May 2020 09:30:54 +0200 Subject: [PATCH] internal/ethapi: moved revert reason logic to doCall --- internal/ethapi/api.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 15a06e541c..03e4fb4cfd 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -861,8 +861,15 @@ func DoCall(ctx context.Context, b Backend, args CallArgs, blockNrOrHash rpc.Blo if evm.Cancelled() { return nil, fmt.Errorf("execution aborted (timeout = %v)", timeout) } - - return result, err + // If the result contains a revert reason, unpack and return it. + if result.Err != nil { + reason, err := abi.UnpackRevert(result.Revert()) + if err != nil { + return nil, err + } + return nil, fmt.Errorf("execution reverted: %v", reason) + } + return result, nil } // Call executes the given transaction on the state for the given block number. @@ -880,13 +887,6 @@ func (s *PublicBlockChainAPI) Call(ctx context.Context, args CallArgs, blockNrOr if err != nil { return nil, err } - if result.Err != nil { - reason, err := abi.UnpackRevert(result.Revert()) - if err != nil { - return result.Return(), err - } - return result.Return(), errors.New(reason) - } return result.Return(), nil }