aboutsummaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorBas van Kervel <bas@ethdev.com>2015-07-03 18:22:20 +0800
committerBas van Kervel <bas@ethdev.com>2015-07-03 18:22:20 +0800
commitf0e94b4d714c45f7b03c66e01c643f4bd07033e3 (patch)
treef224cf2be0d2bd165c2353521306a62ec02a498f /rpc
parentcf6682622363f5a508742c8a4a96070042a3b44b (diff)
downloaddexon-f0e94b4d714c45f7b03c66e01c643f4bd07033e3.tar
dexon-f0e94b4d714c45f7b03c66e01c643f4bd07033e3.tar.gz
dexon-f0e94b4d714c45f7b03c66e01c643f4bd07033e3.tar.bz2
dexon-f0e94b4d714c45f7b03c66e01c643f4bd07033e3.tar.lz
dexon-f0e94b4d714c45f7b03c66e01c643f4bd07033e3.tar.xz
dexon-f0e94b4d714c45f7b03c66e01c643f4bd07033e3.tar.zst
dexon-f0e94b4d714c45f7b03c66e01c643f4bd07033e3.zip
display rpc error in console
Diffstat (limited to 'rpc')
-rw-r--r--rpc/codec/json.go10
-rw-r--r--rpc/jeth.go18
2 files changed, 15 insertions, 13 deletions
diff --git a/rpc/codec/json.go b/rpc/codec/json.go
index b5ef94380..a4953a59c 100644
--- a/rpc/codec/json.go
+++ b/rpc/codec/json.go
@@ -156,15 +156,15 @@ func (self *JsonCodec) ReadResponse() (interface{}, error) {
}
bytesInBuffer += n
+ var failure shared.ErrorResponse
+ if err = json.Unmarshal(buf[:bytesInBuffer], &failure); err == nil && failure.Error != nil {
+ return failure, fmt.Errorf(failure.Error.Message)
+ }
+
var success shared.SuccessResponse
if err = json.Unmarshal(buf[:bytesInBuffer], &success); err == nil {
return success, nil
}
-
- var failure shared.ErrorResponse
- if err = json.Unmarshal(buf[:bytesInBuffer], &failure); err == nil && failure.Error != nil {
- return failure, nil
- }
}
self.c.Close()
diff --git a/rpc/jeth.go b/rpc/jeth.go
index 33fcd6efd..78e44c4da 100644
--- a/rpc/jeth.go
+++ b/rpc/jeth.go
@@ -3,6 +3,8 @@ package rpc
import (
"encoding/json"
+ "fmt"
+
"github.com/ethereum/go-ethereum/jsre"
"github.com/ethereum/go-ethereum/rpc/comms"
"github.com/ethereum/go-ethereum/rpc/shared"
@@ -20,14 +22,13 @@ func NewJeth(ethApi shared.EthereumApi, re *jsre.JSRE, client comms.EthereumClie
}
func (self *Jeth) err(call otto.FunctionCall, code int, msg string, id interface{}) (response otto.Value) {
- rpcerr := &shared.ErrorObject{code, msg}
- call.Otto.Set("ret_jsonrpc", shared.JsonRpcVersion)
- call.Otto.Set("ret_id", id)
- call.Otto.Set("ret_error", rpcerr)
- response, _ = call.Otto.Run(`
- ret_response = { jsonrpc: ret_jsonrpc, id: ret_id, error: ret_error };
- `)
- return
+ errObj := fmt.Sprintf("{\"message\": \"%s\", \"code\": %d}", msg, code)
+ retResponse := fmt.Sprintf("ret_response = JSON.parse('{\"jsonrpc\": \"%s\", \"id\": %v, \"error\": %s}');", shared.JsonRpcVersion, id, errObj)
+
+ call.Otto.Run("ret_error = " + errObj)
+ res, _ := call.Otto.Run(retResponse)
+
+ return res
}
func (self *Jeth) Send(call otto.FunctionCall) (response otto.Value) {
@@ -56,6 +57,7 @@ func (self *Jeth) Send(call otto.FunctionCall) (response otto.Value) {
return self.err(call, -32603, err.Error(), req.Id)
}
respif, err = self.client.Recv()
+
if err != nil {
return self.err(call, -32603, err.Error(), req.Id)
}