@@ -43,6 +43,7 @@ import (
4343 "github.com/ethersphere/bee/v2/pkg/pss"
4444 "github.com/ethersphere/bee/v2/pkg/resolver"
4545 "github.com/ethersphere/bee/v2/pkg/resolver/client/ens"
46+ "github.com/ethersphere/bee/v2/pkg/resolver/multiresolver"
4647 "github.com/ethersphere/bee/v2/pkg/sctx"
4748 "github.com/ethersphere/bee/v2/pkg/settlement"
4849 "github.com/ethersphere/bee/v2/pkg/settlement/swap"
@@ -109,9 +110,8 @@ const (
109110)
110111
111112const (
112- multiPartFormData = "multipart/form-data"
113- contentTypeTar = "application/x-tar"
114- boolHeaderSetValue = "true"
113+ multiPartFormData = "multipart/form-data"
114+ contentTypeTar = "application/x-tar"
115115)
116116
117117var (
@@ -449,6 +449,10 @@ func (s *Service) resolveNameOrAddress(str string) (swarm.Address, error) {
449449 return addr , nil
450450 }
451451
452+ if errors .Is (err , multiresolver .ErrResolverService ) || errors .Is (err , resolver .ErrServiceNotAvailable ) {
453+ return swarm .ZeroAddress , err
454+ }
455+
452456 return swarm .ZeroAddress , fmt .Errorf ("%w: %w" , errInvalidNameOrAddress , err )
453457}
454458
@@ -651,13 +655,23 @@ func (s *Service) mapStructure(input, output interface{}) func(string, log.Logge
651655 Message : msg ,
652656 Code : http .StatusBadRequest ,
653657 }
658+ hasServiceUnavailable := false
654659 for _ , err := range merr .Errors {
660+ if errors .Is (err , resolver .ErrServiceNotAvailable ) {
661+ hasServiceUnavailable = true
662+ resp .Reasons = append (resp .Reasons , jsonhttp.Reason {
663+ Field : "address" ,
664+ Error : err .Error (),
665+ })
666+ continue
667+ }
655668 var perr * parseError
656669 if errors .As (err , & perr ) {
657670 resp .Reasons = append (resp .Reasons , jsonhttp.Reason {
658671 Field : perr .Entry ,
659672 Error : perr .Cause .Error (),
660673 })
674+ continue
661675 }
662676 var verr * validationError
663677 if errors .As (err , & verr ) {
@@ -667,7 +681,14 @@ func (s *Service) mapStructure(input, output interface{}) func(string, log.Logge
667681 })
668682 }
669683 }
670- jsonhttp .BadRequest (w , resp )
684+
685+ if hasServiceUnavailable {
686+ resp .Message = "service unavailable"
687+ resp .Code = http .StatusServiceUnavailable
688+ jsonhttp .ServiceUnavailable (w , resp )
689+ } else {
690+ jsonhttp .BadRequest (w , resp )
691+ }
671692 }
672693 }
673694
0 commit comments