rpc: return error code for eth_getWork when no work ready

This commit is contained in:
Gustav Simonsson
2015-08-26 12:46:50 +02:00
parent abce09954b
commit 829201382b
4 changed files with 28 additions and 4 deletions

View File

@ -563,7 +563,12 @@ func (self *ethApi) GetLogs(req *shared.Request) (interface{}, error) {
func (self *ethApi) GetWork(req *shared.Request) (interface{}, error) {
self.xeth.SetMining(true, 0)
return self.xeth.RemoteMining().GetWork(), nil
ret, err := self.xeth.RemoteMining().GetWork()
if err != nil {
return nil, shared.NewNotReadyError("getWork")
} else {
return ret, nil
}
}
func (self *ethApi) SubmitWork(req *shared.Request) (interface{}, error) {

View File

@ -64,6 +64,20 @@ func NewNotImplementedError(method string) *NotImplementedError {
}
}
type NotReadyError struct {
Method string
}
func (e *NotReadyError) Error() string {
return fmt.Sprintf("%s method not ready", e.Method)
}
func NewNotReadyError(method string) *NotReadyError {
return &NotReadyError{
Method: method,
}
}
type DecodeParamError struct {
err string
}

View File

@ -94,6 +94,9 @@ func NewRpcResponse(id interface{}, jsonrpcver string, reply interface{}, err er
case *NotImplementedError:
jsonerr := &ErrorObject{-32601, err.Error()}
response = &ErrorResponse{Jsonrpc: jsonrpcver, Id: id, Error: jsonerr}
case *NotReadyError:
jsonerr := &ErrorObject{-32000, err.Error()}
response = &ErrorResponse{Jsonrpc: jsonrpcver, Id: id, Error: jsonerr}
case *DecodeParamError, *InsufficientParamsError, *ValidationError, *InvalidTypeError:
jsonerr := &ErrorObject{-32602, err.Error()}
response = &ErrorResponse{Jsonrpc: jsonrpcver, Id: id, Error: jsonerr}