From 6b5f35e5744201af9545ec66f2b38eb912e37850 Mon Sep 17 00:00:00 2001 From: Paul Bellamy Date: Fri, 28 Aug 2015 15:09:33 +0100 Subject: [PATCH] [proxy] Only replace the request body if we've modified it. This is a temporary fix for a failure in docker-py tests: "test_valid_no_config_specified". --- proxy/create_container_interceptor.go | 13 +++++++------ proxy/create_exec_interceptor.go | 8 +++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/proxy/create_container_interceptor.go b/proxy/create_container_interceptor.go index 42b60ed1..2983c6e0 100644 --- a/proxy/create_container_interceptor.go +++ b/proxy/create_container_interceptor.go @@ -45,6 +45,7 @@ func (i *createContainerInterceptor) InterceptRequest(r *http.Request) error { return err } r.Body.Close() + r.Body = ioutil.NopCloser(bytes.NewReader(body)) container := createContainerRequestBody{} if err := json.Unmarshal(body, &container); err != nil { @@ -68,14 +69,14 @@ func (i *createContainerInterceptor) InterceptRequest(r *http.Request) error { if err := i.setWeaveDNS(&container, r); err != nil { return err } - } - newBody, err := json.Marshal(container) - if err != nil { - return err + newBody, err := json.Marshal(container) + if err != nil { + return err + } + r.Body = ioutil.NopCloser(bytes.NewReader(newBody)) + r.ContentLength = int64(len(newBody)) } - r.Body = ioutil.NopCloser(bytes.NewReader(newBody)) - r.ContentLength = int64(len(newBody)) return nil } diff --git a/proxy/create_exec_interceptor.go b/proxy/create_exec_interceptor.go index f15ed56f..841ff145 100644 --- a/proxy/create_exec_interceptor.go +++ b/proxy/create_exec_interceptor.go @@ -1,6 +1,7 @@ package proxy import ( + "bytes" "encoding/json" "io/ioutil" "net/http" @@ -18,6 +19,7 @@ func (i *createExecInterceptor) InterceptRequest(r *http.Request) error { return err } r.Body.Close() + r.Body = ioutil.NopCloser(bytes.NewReader(body)) options := docker.CreateExecOptions{} if err := json.Unmarshal(body, &options); err != nil { @@ -37,10 +39,10 @@ func (i *createExecInterceptor) InterceptRequest(r *http.Request) error { Info.Printf("Exec in container %s with WEAVE_CIDR \"%s\"", container.ID, strings.Join(cidrs, " ")) cmd := append(weaveWaitEntrypoint, "-s") options.Cmd = append(cmd, options.Cmd...) - } - if err := marshalRequestBody(r, options); err != nil { - return err + if err := marshalRequestBody(r, options); err != nil { + return err + } } return nil