summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenfe-Mickael Laventure <mickael.laventure@gmail.com>2016-07-26 19:17:22 -0700
committerKenfe-Mickael Laventure <mickael.laventure@gmail.com>2016-07-26 19:17:22 -0700
commitd6b53d91d7d5e95239dda9a33fd6146cf57fa3f2 (patch)
tree01c277d09573a1c004fed2305ce71a11aadc871a
parenta3f206372f58f45fb5f738d3a1bf1b8e78ee9cbf (diff)
downloaddocker-d6b53d91d7d5e95239dda9a33fd6146cf57fa3f2.tar.gz
Attach stdin after attach stdout/err to avoid an rpc lock
Reason of the lock is currently unknown Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
-rw-r--r--daemon/monitor.go32
1 files changed, 16 insertions, 16 deletions
diff --git a/daemon/monitor.go b/daemon/monitor.go
index 30d36836f8..1f97efb472 100644
--- a/daemon/monitor.go
+++ b/daemon/monitor.go
@@ -119,22 +119,6 @@ func (daemon *Daemon) AttachStreams(id string, iop libcontainerd.IOPipe) error {
}
}
- if stdin := s.Stdin(); stdin != nil {
- if iop.Stdin != nil {
- go func() {
- io.Copy(iop.Stdin, stdin)
- iop.Stdin.Close()
- }()
- }
- } else {
- if c != nil && !c.Config.Tty {
- // tty is enabled, so dont close containerd's iopipe stdin.
- if iop.Stdin != nil {
- iop.Stdin.Close()
- }
- }
- }
-
copyFunc := func(w io.Writer, r io.Reader) {
s.Add(1)
go func() {
@@ -152,5 +136,21 @@ func (daemon *Daemon) AttachStreams(id string, iop libcontainerd.IOPipe) error {
copyFunc(s.Stderr(), iop.Stderr)
}
+ if stdin := s.Stdin(); stdin != nil {
+ if iop.Stdin != nil {
+ go func() {
+ io.Copy(iop.Stdin, stdin)
+ iop.Stdin.Close()
+ }()
+ }
+ } else {
+ if c != nil && !c.Config.Tty {
+ // tty is enabled, so dont close containerd's iopipe stdin.
+ if iop.Stdin != nil {
+ iop.Stdin.Close()
+ }
+ }
+ }
+
return nil
}