diff --git a/api/server/httputils/errors.go b/api/server/httputils/errors.go index c6b0a6b2d8..cf8d2ae639 100644 --- a/api/server/httputils/errors.go +++ b/api/server/httputils/errors.go @@ -52,6 +52,7 @@ func WriteError(w http.ResponseWriter, err error) { "conflict": http.StatusConflict, "impossible": http.StatusNotAcceptable, "wrong login/password": http.StatusUnauthorized, + "unauthorized": http.StatusUnauthorized, "hasn't been activated": http.StatusForbidden, } { if strings.Contains(errStr, keyword) { diff --git a/api/server/router/image/image_routes.go b/api/server/router/image/image_routes.go index 0ead075df8..58abd4b457 100644 --- a/api/server/router/image/image_routes.go +++ b/api/server/router/image/image_routes.go @@ -7,11 +7,9 @@ import ( "fmt" "io" "net/http" - "net/url" "strings" "github.com/docker/distribution/digest" - "github.com/docker/distribution/registry/api/errcode" "github.com/docker/docker/api/server/httputils" "github.com/docker/docker/builder/dockerfile" "github.com/docker/docker/pkg/ioutils" @@ -132,12 +130,6 @@ func (s *imageRouter) postImagesCreate(ctx context.Context, w http.ResponseWrite err = s.backend.PullImage(ctx, ref, metaHeaders, authConfig, output) } } - // Check the error from pulling an image to make sure the request - // was authorized. Modify the status if the request was - // unauthorized to respond with 401 rather than 500. - if err != nil && isAuthorizedError(err) { - err = errcode.ErrorCodeUnauthorized.WithMessage(fmt.Sprintf("Authentication is required: %s", err)) - } } else { //import var newRef reference.Named if repo != "" { @@ -389,16 +381,3 @@ func (s *imageRouter) getImagesSearch(ctx context.Context, w http.ResponseWriter } return httputils.WriteJSON(w, http.StatusOK, query.Results) } - -func isAuthorizedError(err error) bool { - if urlError, ok := err.(*url.Error); ok { - err = urlError.Err - } - - if dError, ok := err.(errcode.Error); ok { - if dError.ErrorCode() == errcode.ErrorCodeUnauthorized { - return true - } - } - return false -}