network: refactor RelayTx error handling

We don't need to wrap different core errors in server. Also it would be
good to provede more error info to the user.
This commit is contained in:
Anna Shaleva 2021-02-17 14:51:54 +03:00
parent 608df7fb21
commit 94430ef3ca
4 changed files with 26 additions and 101 deletions

View file

@ -1266,24 +1266,20 @@ func (s *Server) submitNotaryRequest(ps request.Params) (interface{}, *response.
}
// getRelayResult returns successful relay result or an error.
func getRelayResult(relayReason network.RelayReason, hash util.Uint256) (interface{}, *response.Error) {
switch relayReason {
case network.RelaySucceed:
func getRelayResult(err error, hash util.Uint256) (interface{}, *response.Error) {
switch {
case err == nil:
return result.RelayResult{
Hash: hash,
}, nil
case network.RelayAlreadyExists:
case errors.Is(err, core.ErrAlreadyExists):
return nil, response.ErrAlreadyExists
case network.RelayOutOfMemory:
case errors.Is(err, core.ErrOOM):
return nil, response.ErrOutOfMemory
case network.RelayUnableToVerify:
return nil, response.ErrUnableToVerify
case network.RelayInvalid:
return nil, response.ErrValidationFailed
case network.RelayPolicyFail:
case errors.Is(err, core.ErrPolicy):
return nil, response.ErrPolicyFail
default:
return nil, response.ErrUnknown
return nil, response.ErrValidationFailed
}
}