forked from TrueCloudLab/neoneo-go
rpc: detalize submit*
RPC validation error
These changes do not break the compatibility with the C# node response. It is useful for the end-user to be aware of the failed validation reason. Also, the `cause` will be displayed at the running node log.
This commit is contained in:
parent
492a89eb02
commit
2fbbadeb56
2 changed files with 12 additions and 6 deletions
|
@ -93,3 +93,9 @@ func NewSubmitError(code int64, message string) *Error {
|
||||||
func (e *Error) Error() string {
|
func (e *Error) Error() string {
|
||||||
return fmt.Sprintf("%s (%d) - %s - %s", e.Message, e.Code, e.Data, e.Cause)
|
return fmt.Sprintf("%s (%d) - %s - %s", e.Message, e.Code, e.Data, e.Cause)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WrapErrorWithData returns copy of the given error with specified data and cause.
|
||||||
|
// It does not modify the source error.
|
||||||
|
func WrapErrorWithData(e *Error, data error) *Error {
|
||||||
|
return NewError(e.Code, e.HTTPCode, e.Message, data.Error(), data)
|
||||||
|
}
|
||||||
|
|
|
@ -1235,9 +1235,9 @@ func (s *Server) submitBlock(reqParams request.Params) (interface{}, *response.E
|
||||||
if err != nil {
|
if err != nil {
|
||||||
switch {
|
switch {
|
||||||
case errors.Is(err, core.ErrInvalidBlockIndex) || errors.Is(err, core.ErrAlreadyExists):
|
case errors.Is(err, core.ErrInvalidBlockIndex) || errors.Is(err, core.ErrAlreadyExists):
|
||||||
return nil, response.ErrAlreadyExists
|
return nil, response.WrapErrorWithData(response.ErrAlreadyExists, err)
|
||||||
default:
|
default:
|
||||||
return nil, response.ErrValidationFailed
|
return nil, response.WrapErrorWithData(response.ErrValidationFailed, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &result.RelayResult{
|
return &result.RelayResult{
|
||||||
|
@ -1273,13 +1273,13 @@ func getRelayResult(err error, hash util.Uint256) (interface{}, *response.Error)
|
||||||
Hash: hash,
|
Hash: hash,
|
||||||
}, nil
|
}, nil
|
||||||
case errors.Is(err, core.ErrAlreadyExists):
|
case errors.Is(err, core.ErrAlreadyExists):
|
||||||
return nil, response.ErrAlreadyExists
|
return nil, response.WrapErrorWithData(response.ErrAlreadyExists, err)
|
||||||
case errors.Is(err, core.ErrOOM):
|
case errors.Is(err, core.ErrOOM):
|
||||||
return nil, response.ErrOutOfMemory
|
return nil, response.WrapErrorWithData(response.ErrOutOfMemory, err)
|
||||||
case errors.Is(err, core.ErrPolicy):
|
case errors.Is(err, core.ErrPolicy):
|
||||||
return nil, response.ErrPolicyFail
|
return nil, response.WrapErrorWithData(response.ErrPolicyFail, err)
|
||||||
default:
|
default:
|
||||||
return nil, response.ErrValidationFailed
|
return nil, response.WrapErrorWithData(response.ErrValidationFailed, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue