display rpc error in console

This commit is contained in:
Bas van Kervel 2015-07-03 12:22:20 +02:00
parent cf66826223
commit f0e94b4d71
2 changed files with 15 additions and 13 deletions

View File

@ -156,15 +156,15 @@ func (self *JsonCodec) ReadResponse() (interface{}, error) {
} }
bytesInBuffer += n 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 var success shared.SuccessResponse
if err = json.Unmarshal(buf[:bytesInBuffer], &success); err == nil { if err = json.Unmarshal(buf[:bytesInBuffer], &success); err == nil {
return success, 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() self.c.Close()

View File

@ -3,6 +3,8 @@ package rpc
import ( import (
"encoding/json" "encoding/json"
"fmt"
"github.com/ethereum/go-ethereum/jsre" "github.com/ethereum/go-ethereum/jsre"
"github.com/ethereum/go-ethereum/rpc/comms" "github.com/ethereum/go-ethereum/rpc/comms"
"github.com/ethereum/go-ethereum/rpc/shared" "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) { func (self *Jeth) err(call otto.FunctionCall, code int, msg string, id interface{}) (response otto.Value) {
rpcerr := &shared.ErrorObject{code, msg} errObj := fmt.Sprintf("{\"message\": \"%s\", \"code\": %d}", msg, code)
call.Otto.Set("ret_jsonrpc", shared.JsonRpcVersion) retResponse := fmt.Sprintf("ret_response = JSON.parse('{\"jsonrpc\": \"%s\", \"id\": %v, \"error\": %s}');", shared.JsonRpcVersion, id, errObj)
call.Otto.Set("ret_id", id)
call.Otto.Set("ret_error", rpcerr) call.Otto.Run("ret_error = " + errObj)
response, _ = call.Otto.Run(` res, _ := call.Otto.Run(retResponse)
ret_response = { jsonrpc: ret_jsonrpc, id: ret_id, error: ret_error };
`) return res
return
} }
func (self *Jeth) Send(call otto.FunctionCall) (response otto.Value) { 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) return self.err(call, -32603, err.Error(), req.Id)
} }
respif, err = self.client.Recv() respif, err = self.client.Recv()
if err != nil { if err != nil {
return self.err(call, -32603, err.Error(), req.Id) return self.err(call, -32603, err.Error(), req.Id)
} }