mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Fix regressions in attach
* Wrong bool parsing * Attach always all streams Were introduced in #12120 Signed-off-by: Alexander Morozov <lk4d4@docker.com>
This commit is contained in:
parent
6ba7bf440e
commit
0fec3e19db
2 changed files with 25 additions and 10 deletions
|
@ -1011,10 +1011,23 @@ func postContainersAttach(eng *engine.Engine, version version.Version, w http.Re
|
|||
} else {
|
||||
errStream = outStream
|
||||
}
|
||||
logs := r.Form.Get("logs") != ""
|
||||
stream := r.Form.Get("stream") != ""
|
||||
logs := toBool(r.Form.Get("logs"))
|
||||
stream := toBool(r.Form.Get("stream"))
|
||||
|
||||
if err := cont.AttachWithLogs(inStream, outStream, errStream, logs, stream); err != nil {
|
||||
var stdin io.ReadCloser
|
||||
var stdout, stderr io.Writer
|
||||
|
||||
if toBool(r.Form.Get("stdin")) {
|
||||
stdin = inStream
|
||||
}
|
||||
if toBool(r.Form.Get("stdout")) {
|
||||
stdout = outStream
|
||||
}
|
||||
if toBool(r.Form.Get("stderr")) {
|
||||
stderr = errStream
|
||||
}
|
||||
|
||||
if err := cont.AttachWithLogs(stdin, stdout, stderr, logs, stream); err != nil {
|
||||
fmt.Fprintf(outStream, "Error attaching: %s\n", err)
|
||||
}
|
||||
return nil
|
||||
|
|
|
@ -61,13 +61,15 @@ func (c *Container) AttachWithLogs(stdin io.ReadCloser, stdout, stderr io.Writer
|
|||
//stream
|
||||
if stream {
|
||||
var stdinPipe io.ReadCloser
|
||||
r, w := io.Pipe()
|
||||
go func() {
|
||||
defer w.Close()
|
||||
defer logrus.Debugf("Closing buffered stdin pipe")
|
||||
io.Copy(w, stdin)
|
||||
}()
|
||||
stdinPipe = r
|
||||
if stdin != nil {
|
||||
r, w := io.Pipe()
|
||||
go func() {
|
||||
defer w.Close()
|
||||
defer logrus.Debugf("Closing buffered stdin pipe")
|
||||
io.Copy(w, stdin)
|
||||
}()
|
||||
stdinPipe = r
|
||||
}
|
||||
<-c.Attach(stdinPipe, stdout, stderr)
|
||||
// If we are in stdinonce mode, wait for the process to end
|
||||
// otherwise, simply return
|
||||
|
|
Loading…
Add table
Reference in a new issue