mirror of
https://github.com/moby/moby.git
synced 2026-08-03 14:41:03 +00:00
Merge pull request #49666 from thaJeztah/legacy_errors
api, client: produce human-readable errors for unsupported API versions (< v1.24)
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/docker/docker/api/server/middleware"
|
||||
"github.com/docker/docker/api/server/router"
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/api/types/versions"
|
||||
"github.com/docker/docker/dockerversion"
|
||||
"github.com/docker/docker/internal/otelutil"
|
||||
"github.com/gorilla/mux"
|
||||
@@ -62,9 +63,20 @@ func (s *Server) makeHTTPHandler(handler httputils.APIFunc, operation string) ht
|
||||
if statusCode >= 500 {
|
||||
log.G(ctx).Errorf("Handler for %s %s returned error: %v", r.Method, r.URL.Path, err)
|
||||
}
|
||||
_ = httputils.WriteJSON(w, statusCode, &types.ErrorResponse{
|
||||
Message: err.Error(),
|
||||
})
|
||||
// While we no longer support API versions older 1.24 [api.MinSupportedAPIVersion],
|
||||
// a client may try to connect using an older version and expect a plain-text error
|
||||
// instead of a JSON error. This would result in an "API version too old" error
|
||||
// formatted in JSON being printed as-is.
|
||||
//
|
||||
// Let's be nice, and return errors in plain-text to provide a more readable error
|
||||
// to help the user understand the API version they're using is no longer supported.
|
||||
if v := vars["version"]; v != "" && versions.LessThan(v, "1.24") {
|
||||
http.Error(w, err.Error(), statusCode)
|
||||
} else {
|
||||
_ = httputils.WriteJSON(w, statusCode, &types.ErrorResponse{
|
||||
Message: err.Error(),
|
||||
})
|
||||
}
|
||||
}
|
||||
}), operation).ServeHTTP
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user