mirror of https://github.com/status-im/op-geth.git
Merge pull request #300 from tgerring/jsonrpc
Allow RPC ID to be string or null
This commit is contained in:
commit
ef6c7bd726
|
@ -102,7 +102,7 @@ func (s *RpcHttpServer) apiHandler(api *rpc.EthereumApi) http.Handler {
|
||||||
if reserr != nil {
|
if reserr != nil {
|
||||||
rpchttplogger.Warnln(reserr)
|
rpchttplogger.Warnln(reserr)
|
||||||
jsonerr := &rpc.RpcErrorObject{-32603, reserr.Error()}
|
jsonerr := &rpc.RpcErrorObject{-32603, reserr.Error()}
|
||||||
JSON.Send(w, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: &reqParsed.ID, Error: jsonerr})
|
JSON.Send(w, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: reqParsed.ID, Error: jsonerr})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,20 +34,20 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
type RpcRequest struct {
|
type RpcRequest struct {
|
||||||
|
ID interface{} `json:"id"`
|
||||||
JsonRpc string `json:"jsonrpc"`
|
JsonRpc string `json:"jsonrpc"`
|
||||||
ID int `json:"id"`
|
|
||||||
Method string `json:"method"`
|
Method string `json:"method"`
|
||||||
Params []json.RawMessage `json:"params"`
|
Params []json.RawMessage `json:"params"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type RpcSuccessResponse struct {
|
type RpcSuccessResponse struct {
|
||||||
ID int `json:"id"`
|
ID interface{} `json:"id"`
|
||||||
JsonRpc string `json:"jsonrpc"`
|
JsonRpc string `json:"jsonrpc"`
|
||||||
Result interface{} `json:"result"`
|
Result interface{} `json:"result"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type RpcErrorResponse struct {
|
type RpcErrorResponse struct {
|
||||||
ID *int `json:"id"`
|
ID interface{} `json:"id"`
|
||||||
JsonRpc string `json:"jsonrpc"`
|
JsonRpc string `json:"jsonrpc"`
|
||||||
Error *RpcErrorObject `json:"error"`
|
Error *RpcErrorObject `json:"error"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,6 @@ func (self JsonWrapper) ParseRequestBody(req *http.Request) (RpcRequest, error)
|
||||||
|
|
||||||
// Convert JSON to native types
|
// Convert JSON to native types
|
||||||
d := json.NewDecoder(req.Body)
|
d := json.NewDecoder(req.Body)
|
||||||
// d.UseNumber()
|
|
||||||
defer req.Body.Close()
|
defer req.Body.Close()
|
||||||
err := d.Decode(&reqParsed)
|
err := d.Decode(&reqParsed)
|
||||||
|
|
||||||
|
@ -55,6 +54,7 @@ func (self JsonWrapper) ParseRequestBody(req *http.Request) (RpcRequest, error)
|
||||||
rpclogger.Errorln("Error decoding JSON: ", err)
|
rpclogger.Errorln("Error decoding JSON: ", err)
|
||||||
return reqParsed, err
|
return reqParsed, err
|
||||||
}
|
}
|
||||||
|
|
||||||
rpclogger.DebugDetailf("Parsed request: %s", reqParsed)
|
rpclogger.DebugDetailf("Parsed request: %s", reqParsed)
|
||||||
|
|
||||||
return reqParsed, nil
|
return reqParsed, nil
|
||||||
|
|
|
@ -94,9 +94,10 @@ func sockHandler(api *rpc.EthereumApi) websocket.Handler {
|
||||||
var jsonrpcver string = "2.0"
|
var jsonrpcver string = "2.0"
|
||||||
fn := func(conn *websocket.Conn) {
|
fn := func(conn *websocket.Conn) {
|
||||||
for {
|
for {
|
||||||
wslogger.Debugln("Handling request")
|
wslogger.Debugln("Handling connection")
|
||||||
var reqParsed rpc.RpcRequest
|
var reqParsed rpc.RpcRequest
|
||||||
|
|
||||||
|
// reqParsed, reqerr := JSON.ParseRequestBody(conn.Request())
|
||||||
if err := websocket.JSON.Receive(conn, &reqParsed); err != nil {
|
if err := websocket.JSON.Receive(conn, &reqParsed); err != nil {
|
||||||
jsonerr := &rpc.RpcErrorObject{-32700, rpc.ErrorParseRequest}
|
jsonerr := &rpc.RpcErrorObject{-32700, rpc.ErrorParseRequest}
|
||||||
JSON.Send(conn, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: nil, Error: jsonerr})
|
JSON.Send(conn, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: nil, Error: jsonerr})
|
||||||
|
@ -108,7 +109,7 @@ func sockHandler(api *rpc.EthereumApi) websocket.Handler {
|
||||||
if reserr != nil {
|
if reserr != nil {
|
||||||
wslogger.Warnln(reserr)
|
wslogger.Warnln(reserr)
|
||||||
jsonerr := &rpc.RpcErrorObject{-32603, reserr.Error()}
|
jsonerr := &rpc.RpcErrorObject{-32603, reserr.Error()}
|
||||||
JSON.Send(conn, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: &reqParsed.ID, Error: jsonerr})
|
JSON.Send(conn, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: reqParsed.ID, Error: jsonerr})
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue