mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-12-23 03:41:34 +00:00
Bug where result was written after error regardless of if there was one or not (#54)
* Fix bug where result was sent back aswell as error * Bumps version
This commit is contained in:
parent
19a430b262
commit
ad9333c74c
2 changed files with 22 additions and 6 deletions
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
0.33.0
|
0.33.1
|
||||||
|
|
|
@ -22,6 +22,12 @@ type (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
invalidBlockHeightError = func(index int, height int) error {
|
||||||
|
return fmt.Errorf("Param at index %d should be greater than or equal to 0 and less then or equal to current block height, got: %d", index, height)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// NewServer creates a new Server struct.
|
// NewServer creates a new Server struct.
|
||||||
func NewServer(chain core.Blockchainer, port uint16, coreServer *network.Server) Server {
|
func NewServer(chain core.Blockchainer, port uint16, coreServer *network.Server) Server {
|
||||||
return Server{
|
return Server{
|
||||||
|
@ -90,6 +96,7 @@ func (s *Server) methodHandler(w http.ResponseWriter, req *Request, reqParams Pa
|
||||||
var results interface{}
|
var results interface{}
|
||||||
var resultsErr *Error
|
var resultsErr *Error
|
||||||
|
|
||||||
|
Methods:
|
||||||
switch req.Method {
|
switch req.Method {
|
||||||
case "getbestblockhash":
|
case "getbestblockhash":
|
||||||
results = s.chain.CurrentBlockHash().String()
|
results = s.chain.CurrentBlockHash().String()
|
||||||
|
@ -113,6 +120,12 @@ func (s *Server) methodHandler(w http.ResponseWriter, req *Request, reqParams Pa
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
case "number":
|
case "number":
|
||||||
|
if !s.validBlockHeight(param) {
|
||||||
|
err = invalidBlockHeightError(0, param.IntVal)
|
||||||
|
resultsErr = NewInvalidParamsError(err.Error(), err)
|
||||||
|
break Methods
|
||||||
|
}
|
||||||
|
|
||||||
hash = s.chain.GetHeaderHash(param.IntVal)
|
hash = s.chain.GetHeaderHash(param.IntVal)
|
||||||
case "default":
|
case "default":
|
||||||
err = errors.New("Expected param at index 0 to be either string or number")
|
err = errors.New("Expected param at index 0 to be either string or number")
|
||||||
|
@ -130,10 +143,10 @@ func (s *Server) methodHandler(w http.ResponseWriter, req *Request, reqParams Pa
|
||||||
results = s.chain.BlockHeight()
|
results = s.chain.BlockHeight()
|
||||||
|
|
||||||
case "getblockhash":
|
case "getblockhash":
|
||||||
if param, exists := reqParams.ValueAtAndType(0, "number"); exists {
|
if param, exists := reqParams.ValueAtAndType(0, "number"); exists && s.validBlockHeight(param) {
|
||||||
results = s.chain.GetHeaderHash(param.IntVal)
|
results = s.chain.GetHeaderHash(param.IntVal)
|
||||||
} else {
|
} else {
|
||||||
err := errors.New("Unable to parse parameter in position 0, expected a number")
|
err := invalidBlockHeightError(0, param.IntVal)
|
||||||
resultsErr = NewInvalidParamsError(err.Error(), err)
|
resultsErr = NewInvalidParamsError(err.Error(), err)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -173,9 +186,12 @@ func (s *Server) methodHandler(w http.ResponseWriter, req *Request, reqParams Pa
|
||||||
|
|
||||||
if resultsErr != nil {
|
if resultsErr != nil {
|
||||||
req.WriteErrorResponse(w, resultsErr)
|
req.WriteErrorResponse(w, resultsErr)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if results != nil {
|
|
||||||
req.WriteResponse(w, results)
|
req.WriteResponse(w, results)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s Server) validBlockHeight(param *Param) bool {
|
||||||
|
return param.IntVal >= 0 && param.IntVal <= int(s.chain.BlockHeight())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue