From d9b4bc76d4cee1c6d2240faededfc0b7c513ea53 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Thu, 28 May 2020 11:27:20 +0200 Subject: [PATCH] internal/ethapi: add errorCode to revert error --- console/bridge.go | 8 +++++--- internal/ethapi/api.go | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/console/bridge.go b/console/bridge.go index 436db6ca5b..7249435b02 100644 --- a/console/bridge.go +++ b/console/bridge.go @@ -434,9 +434,11 @@ func (b *bridge) Send(call jsre.Call) (goja.Value, error) { } } case rpc.Error: - setError(resp, err.ErrorCode(), err.Error()) - case rpc.DataError: - resp.Set("error", map[string]interface{}{"code": -32603, "message": err.Error(), "data": err.ErrorData()}) + errMap := map[string]interface{}{"code": err.ErrorCode(), "message": err.Error()} + if dataErr, ok := err.(rpc.DataError); ok { + errMap["data"] = dataErr.ErrorData() + } + resp.Set("error", errMap) default: setError(resp, -32603, err.Error()) } diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 28aec5228c..693fcc9f8d 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -868,6 +868,7 @@ var _ rpc.DataError = (*revertError)(nil) type revertError struct { err string // The error string + code int // optional error code errData interface{} // additional data } @@ -875,6 +876,10 @@ func (e revertError) Error() string { return e.err } +func (e revertError) ErrorCode() int { + return e.code +} + func (e revertError) ErrorData() interface{} { return e.errData }