|
@@ -4,6 +4,7 @@ import (
|
|
|
"context"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
+ "io"
|
|
|
"net/http"
|
|
|
"strconv"
|
|
|
|
|
@@ -21,7 +22,10 @@ import (
|
|
|
func (sr *swarmRouter) initCluster(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var req types.InitRequest
|
|
|
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
|
|
- return err
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
nodeID, err := sr.backend.Init(req)
|
|
|
if err != nil {
|
|
@@ -34,7 +38,10 @@ func (sr *swarmRouter) initCluster(ctx context.Context, w http.ResponseWriter, r
|
|
|
func (sr *swarmRouter) joinCluster(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var req types.JoinRequest
|
|
|
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
|
|
- return err
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
return sr.backend.Join(req)
|
|
|
}
|
|
@@ -61,7 +68,10 @@ func (sr *swarmRouter) inspectCluster(ctx context.Context, w http.ResponseWriter
|
|
|
func (sr *swarmRouter) updateCluster(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var swarm types.Spec
|
|
|
if err := json.NewDecoder(r.Body).Decode(&swarm); err != nil {
|
|
|
- return err
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
|
|
|
rawVersion := r.URL.Query().Get("version")
|
|
@@ -112,7 +122,10 @@ func (sr *swarmRouter) updateCluster(ctx context.Context, w http.ResponseWriter,
|
|
|
func (sr *swarmRouter) unlockCluster(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var req types.UnlockRequest
|
|
|
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
|
|
- return err
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
|
|
|
if err := sr.backend.UnlockSwarm(req); err != nil {
|
|
@@ -175,7 +188,10 @@ func (sr *swarmRouter) getService(ctx context.Context, w http.ResponseWriter, r
|
|
|
func (sr *swarmRouter) createService(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var service types.ServiceSpec
|
|
|
if err := json.NewDecoder(r.Body).Decode(&service); err != nil {
|
|
|
- return err
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
|
|
|
// Get returns "" if the header does not exist
|
|
@@ -207,7 +223,10 @@ func (sr *swarmRouter) createService(ctx context.Context, w http.ResponseWriter,
|
|
|
func (sr *swarmRouter) updateService(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var service types.ServiceSpec
|
|
|
if err := json.NewDecoder(r.Body).Decode(&service); err != nil {
|
|
|
- return err
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
|
|
|
rawVersion := r.URL.Query().Get("version")
|
|
@@ -309,7 +328,10 @@ func (sr *swarmRouter) getNode(ctx context.Context, w http.ResponseWriter, r *ht
|
|
|
func (sr *swarmRouter) updateNode(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var node types.NodeSpec
|
|
|
if err := json.NewDecoder(r.Body).Decode(&node); err != nil {
|
|
|
- return err
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
|
|
|
rawVersion := r.URL.Query().Get("version")
|
|
@@ -388,7 +410,10 @@ func (sr *swarmRouter) getSecrets(ctx context.Context, w http.ResponseWriter, r
|
|
|
func (sr *swarmRouter) createSecret(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var secret types.SecretSpec
|
|
|
if err := json.NewDecoder(r.Body).Decode(&secret); err != nil {
|
|
|
- return err
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
version := httputils.VersionFromContext(ctx)
|
|
|
if secret.Templating != nil && versions.LessThan(version, "1.37") {
|
|
@@ -426,6 +451,9 @@ func (sr *swarmRouter) getSecret(ctx context.Context, w http.ResponseWriter, r *
|
|
|
func (sr *swarmRouter) updateSecret(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var secret types.SecretSpec
|
|
|
if err := json.NewDecoder(r.Body).Decode(&secret); err != nil {
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
|
|
@@ -459,7 +487,10 @@ func (sr *swarmRouter) getConfigs(ctx context.Context, w http.ResponseWriter, r
|
|
|
func (sr *swarmRouter) createConfig(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var config types.ConfigSpec
|
|
|
if err := json.NewDecoder(r.Body).Decode(&config); err != nil {
|
|
|
- return err
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
|
|
|
version := httputils.VersionFromContext(ctx)
|
|
@@ -498,6 +529,9 @@ func (sr *swarmRouter) getConfig(ctx context.Context, w http.ResponseWriter, r *
|
|
|
func (sr *swarmRouter) updateConfig(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var config types.ConfigSpec
|
|
|
if err := json.NewDecoder(r.Body).Decode(&config); err != nil {
|
|
|
+ if err == io.EOF {
|
|
|
+ return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
+ }
|
|
|
return errdefs.InvalidParameter(err)
|
|
|
}
|
|
|
|