Merge pull request #1724 from Gustav-Simonsson/get_work
rpc: return error code for eth_getWork when no work ready
This commit is contained in:
@@ -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("mining work")
|
||||
} else {
|
||||
return ret, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (self *ethApi) SubmitWork(req *shared.Request) (interface{}, error) {
|
||||
|
||||
@@ -64,6 +64,20 @@ func NewNotImplementedError(method string) *NotImplementedError {
|
||||
}
|
||||
}
|
||||
|
||||
type NotReadyError struct {
|
||||
Resource string
|
||||
}
|
||||
|
||||
func (e *NotReadyError) Error() string {
|
||||
return fmt.Sprintf("%s not ready", e.Resource)
|
||||
}
|
||||
|
||||
func NewNotReadyError(resource string) *NotReadyError {
|
||||
return &NotReadyError{
|
||||
Resource: resource,
|
||||
}
|
||||
}
|
||||
|
||||
type DecodeParamError struct {
|
||||
err string
|
||||
}
|
||||
|
||||
@@ -92,6 +92,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}
|
||||
|
||||
Reference in New Issue
Block a user