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