mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-21 23:29:38 +00:00
rpcsrv: align default error code with C# implementation
We had 400, 405 and 500 in getHTTPCodeForError, but none is explicitly set in C#. 1. **405 code** (unknown method, `neorpc.MethodNotFoundCode`). The resulting HTTP code returned by C# server is 200 OK: ``` anna@kiwi:~/Documents/GitProjects/bane-labs/go-ethereum$ curl -v -d '{ "jsonrpc": "2.0", "id": 1, "method": "unknown-method", "params": [] }' http://seed1t5.neo.org:20332 | json_pp % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 34.133.235.69:20332... * Connected to seed1t5.neo.org (34.133.235.69) port 20332 (#0) 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0> POST / HTTP/1.1 > Host: seed1t5.neo.org:20332 > User-Agent: curl/7.81.0 > Accept: */* > Content-Length: 71 > Content-Type: application/x-www-form-urlencoded > } [71 bytes data] * Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < Content-Type: application/json < Date: Tue, 12 Nov 2024 13:45:51 GMT < Server: Kestrel < Transfer-Encoding: chunked < { [461 bytes data] 100 520 0 449 100 71 729 115 --:--:-- --:--:-- --:--:-- 844 * Connection #0 to host seed1t5.neo.org left intact { "error" : { "code" : -32601, "data" : " at Neo.Plugins.Result.True_Or(Boolean result, RpcError err)\n at Neo.Plugins.RpcServer.ProcessRequestAsync (HttpContext context, JObject request)", "message" : "Method not found - The method 'unknown-method' doesn't exists. - at Neo.Plugins.Result.True_Or(Boolean result, RpcError err)\n at Neo.Plugins.RpcServer.ProcessRequestAsync (HttpContext context, JObject request)" }, "id" : 1, "jsonrpc" : "2.0" } ``` 2. **400 code** (malformed request, `neorpc.BadRequestCode`). The resulting HTTP code returned by C# server is 200 OK: ``` anna@kiwi:~/Documents/GitProjects/bane-labs/go-ethereum$ curl -v -d '{ "jsonrpc": "2.0", "id": 1, "method": "getapplicationlog", "params": ["] }' http://seed1t5.neo.org:20332 | json_pp % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 34.133.235.69:20332... 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to seed1t5.neo.org (34.133.235.69) port 20332 (#0) > POST / HTTP/1.1 > Host: seed1t5.neo.org:20332 > User-Agent: curl/7.81.0 > Accept: */* > Content-Length: 75 > Content-Type: application/x-www-form-urlencoded > } [75 bytes data] * Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < Content-Type: application/json < Date: Tue, 12 Nov 2024 13:50:12 GMT < Server: Kestrel < Transfer-Encoding: chunked < { [86 bytes data] 100 150 0 75 100 75 84 84 --:--:-- --:--:-- --:--:-- 169 * Connection #0 to host seed1t5.neo.org left intact { "error" : { "code" : -32700, "message" : "Bad request" }, "id" : null, "jsonrpc" : "2.0" } ``` 3. **500 code** (internal server error, `neorpc .InternalServerErrorCode`). It's difficult to reproduce this error on real network for C# server, but the resulting code is expected to be the same, 200 OK. Close #3586 Signed-off-by: Ekaterina Pavlova <ekt@morphbits.io>
This commit is contained in:
parent
66fbcb2f00
commit
0afd9ac0bb
2 changed files with 0 additions and 23 deletions
|
@ -1,8 +1,6 @@
|
|||
package rpcsrv
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/nspcc-dev/neo-go/pkg/neorpc"
|
||||
)
|
||||
|
||||
|
@ -36,18 +34,3 @@ func (ab abstractBatch) RunForErrors(f func(jsonErr *neorpc.Error)) {
|
|||
a.RunForErrors(f)
|
||||
}
|
||||
}
|
||||
|
||||
func getHTTPCodeForError(respErr *neorpc.Error) int {
|
||||
var httpCode int
|
||||
switch respErr.Code {
|
||||
case neorpc.BadRequestCode:
|
||||
httpCode = http.StatusBadRequest
|
||||
case neorpc.MethodNotFoundCode:
|
||||
httpCode = http.StatusMethodNotAllowed
|
||||
case neorpc.InternalServerErrorCode:
|
||||
httpCode = http.StatusInternalServerError
|
||||
default:
|
||||
httpCode = http.StatusUnprocessableEntity
|
||||
}
|
||||
return httpCode
|
||||
}
|
||||
|
|
|
@ -3100,12 +3100,6 @@ func (s *Server) writeHTTPServerResponse(r *params.Request, w http.ResponseWrite
|
|||
if s.config.EnableCORSWorkaround {
|
||||
setCORSOriginHeaders(w.Header())
|
||||
}
|
||||
if r.In != nil {
|
||||
resp := resp.(abstract)
|
||||
if resp.Error != nil {
|
||||
w.WriteHeader(getHTTPCodeForError(resp.Error))
|
||||
}
|
||||
}
|
||||
|
||||
encoder := json.NewEncoder(w)
|
||||
err := encoder.Encode(resp)
|
||||
|
|
Loading…
Reference in a new issue