diff --git a/api.go b/api.go index ea685c68dc..ee3cbf9d94 100644 --- a/api.go +++ b/api.go @@ -751,8 +751,17 @@ func postContainersAttach(srv *Server, version float64, w http.ResponseWriter, r return fmt.Errorf("Missing parameter") } - c, err := srv.ContainerInspect(vars["name"]) - if err != nil { + var ( + job = srv.Eng.Job("inspect_container", vars["name"]) + buffer = bytes.NewBuffer(nil) + c Container + ) + job.Stdout.Add(buffer) + if err := job.Run(); err != nil { + return err + } + + if err := json.Unmarshal(buffer.Bytes(), &c); err != nil { return err } @@ -786,7 +795,7 @@ func postContainersAttach(srv *Server, version float64, w http.ResponseWriter, r errStream = outStream } - job := srv.Eng.Job("attach", vars["name"]) + job = srv.Eng.Job("attach", vars["name"]) job.Setenv("logs", r.Form.Get("logs")) job.Setenv("stream", r.Form.Get("stream")) job.Setenv("stdin", r.Form.Get("stdin")) @@ -810,7 +819,7 @@ func wsContainersAttach(srv *Server, version float64, w http.ResponseWriter, r * return fmt.Errorf("Missing parameter") } - if _, err := srv.ContainerInspect(vars["name"]); err != nil { + if err := srv.Eng.Job("inspect_container", vars["name"]).Run(); err != nil { return err } diff --git a/server.go b/server.go index a52fd20693..2dd4c7ce23 100644 --- a/server.go +++ b/server.go @@ -2322,12 +2322,10 @@ func (srv *Server) JobContainerInspect(job *engine.Job) engine.Status { return engine.StatusErr } - type HostConfigPacker struct { + b, err := json.Marshal(&struct { *Container HostConfig *HostConfig - } - - b, err := json.Marshal(&HostConfigPacker{container, container.hostConfig}) + }{container, container.hostConfig}) if err != nil { job.Error(err) return engine.StatusErr