diff options
author | obscuren <geffobscura@gmail.com> | 2015-03-13 23:36:27 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-03-13 23:36:27 +0800 |
commit | b663e8b29a7451a79b909c017f8a244d23c8fef4 (patch) | |
tree | 722ffd039ea9970170bbe054f8044625bc719373 /rpc/http.go | |
parent | f1fcda4f2fe05e46e3d350cb89a52fd33df3767f (diff) | |
parent | e3b64d70c212d893c147b8af62abe5c03fb2f492 (diff) | |
download | dexon-b663e8b29a7451a79b909c017f8a244d23c8fef4.tar dexon-b663e8b29a7451a79b909c017f8a244d23c8fef4.tar.gz dexon-b663e8b29a7451a79b909c017f8a244d23c8fef4.tar.bz2 dexon-b663e8b29a7451a79b909c017f8a244d23c8fef4.tar.lz dexon-b663e8b29a7451a79b909c017f8a244d23c8fef4.tar.xz dexon-b663e8b29a7451a79b909c017f8a244d23c8fef4.tar.zst dexon-b663e8b29a7451a79b909c017f8a244d23c8fef4.zip |
Merge branch 'rpcfrontier' into develop
Diffstat (limited to 'rpc/http.go')
-rw-r--r-- | rpc/http.go | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/rpc/http.go b/rpc/http.go index 857cf3221..8dcd55ad1 100644 --- a/rpc/http.go +++ b/rpc/http.go @@ -25,22 +25,39 @@ func JSONRPC(pipe *xeth.XEth, dataDir string) http.Handler { rpchttplogger.DebugDetailln("Handling request") if req.ContentLength > maxSizeReqLength { - jsonerr := &RpcErrorObject{-32700, "Error: Request too large"} + jsonerr := &RpcErrorObject{-32700, "Request too large"} json.Send(w, &RpcErrorResponse{JsonRpc: jsonrpcver, ID: nil, Error: jsonerr}) return } reqParsed, reqerr := json.ParseRequestBody(req) - if reqerr != nil { - jsonerr := &RpcErrorObject{-32700, "Error: Could not parse request"} + switch reqerr.(type) { + case nil: + break + case *DecodeParamError, *InsufficientParamsError, *ValidationError: + jsonerr := &RpcErrorObject{-32602, reqerr.Error()} + json.Send(w, &RpcErrorResponse{JsonRpc: jsonrpcver, ID: nil, Error: jsonerr}) + return + default: + jsonerr := &RpcErrorObject{-32700, "Could not parse request"} json.Send(w, &RpcErrorResponse{JsonRpc: jsonrpcver, ID: nil, Error: jsonerr}) return } var response interface{} reserr := api.GetRequestReply(&reqParsed, &response) - if reserr != nil { - rpchttplogger.Warnln(reserr) + switch reserr.(type) { + case nil: + break + case *NotImplementedError: + jsonerr := &RpcErrorObject{-32601, reserr.Error()} + json.Send(w, &RpcErrorResponse{JsonRpc: jsonrpcver, ID: reqParsed.ID, Error: jsonerr}) + return + case *DecodeParamError, *InsufficientParamsError, *ValidationError: + jsonerr := &RpcErrorObject{-32602, reserr.Error()} + json.Send(w, &RpcErrorResponse{JsonRpc: jsonrpcver, ID: reqParsed.ID, Error: jsonerr}) + return + default: jsonerr := &RpcErrorObject{-32603, reserr.Error()} json.Send(w, &RpcErrorResponse{JsonRpc: jsonrpcver, ID: reqParsed.ID, Error: jsonerr}) return |