diff options
author | Felix Lange <fjl@twurst.com> | 2017-01-08 07:47:47 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2017-01-08 07:55:48 +0800 |
commit | 9bab0b8a24d56acdb40ee7a575958bc189494b4e (patch) | |
tree | 8530eac988aa51135b78512299c77214fae65069 | |
parent | 17182732f50c9cd209a0472bf0944c4029335f14 (diff) | |
download | dexon-9bab0b8a24d56acdb40ee7a575958bc189494b4e.tar.gz dexon-9bab0b8a24d56acdb40ee7a575958bc189494b4e.tar.zst dexon-9bab0b8a24d56acdb40ee7a575958bc189494b4e.zip |
console: fix error message in faux JSON-RPC responses
The message was used as both key and value in the error object.
This only affected unusual errors with no error code.
-rw-r--r-- | console/bridge.go | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/console/bridge.go b/console/bridge.go index 1c5bc8419..f0c59804b 100644 --- a/console/bridge.go +++ b/console/bridge.go @@ -270,18 +270,15 @@ func (b *bridge) Send(call otto.FunctionCall) (response otto.Value) { } else { resultVal, err := JSON.Call("parse", string(result)) if err != nil { - resp = newErrorResponse(call, -32603, err.Error(), &req.Id).Object() + setError(resp, -32603, err.Error()) } else { resp.Set("result", resultVal) } } case rpc.Error: - resp.Set("error", map[string]interface{}{ - "code": err.ErrorCode(), - "message": err.Error(), - }) + setError(resp, err.ErrorCode(), err.Error()) default: - resp = newErrorResponse(call, -32603, err.Error(), &req.Id).Object() + setError(resp, -32603, err.Error()) } resps.Call("push", resp) } @@ -300,12 +297,8 @@ func (b *bridge) Send(call otto.FunctionCall) (response otto.Value) { return response } -func newErrorResponse(call otto.FunctionCall, code int, msg string, id interface{}) otto.Value { - // Bundle the error into a JSON RPC call response - m := map[string]interface{}{"version": "2.0", "id": id, "error": map[string]interface{}{"code": code, msg: msg}} - res, _ := json.Marshal(m) - val, _ := call.Otto.Run("(" + string(res) + ")") - return val +func setError(resp *otto.Object, code int, msg string) { + resp.Set("error", map[string]interface{}{"code": code, "message": msg}) } // throwJSException panics on an otto.Value. The Otto VM will recover from the |