diff --git a/api/server/server.go b/api/server/server.go index 87ee6c8478..92770e3b46 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -862,11 +862,12 @@ func (s *Server) postImagesPush(eng *engine.Engine, version version.Version, w h useJSON := version.GreaterThan("1.0") name := vars["name"] + output := utils.NewWriteFlusher(w) imagePushConfig := &graph.ImagePushConfig{ MetaHeaders: metaHeaders, AuthConfig: authConfig, Tag: r.Form.Get("tag"), - OutStream: utils.NewWriteFlusher(w), + OutStream: output, Json: useJSON, } if useJSON { @@ -874,8 +875,11 @@ func (s *Server) postImagesPush(eng *engine.Engine, version version.Version, w h } if err := s.daemon.Repositories().Push(name, imagePushConfig); err != nil { + if !output.Flushed() { + return err + } sf := streamformatter.NewStreamFormatter(useJSON) - return fmt.Errorf(string(sf.FormatError(err))) + output.Write(sf.FormatError(err)) } return nil