diff options
author | Matthew Heon <mheon@redhat.com> | 2020-10-28 11:32:31 -0400 |
---|---|---|
committer | Matthew Heon <mheon@redhat.com> | 2020-10-28 11:32:31 -0400 |
commit | 2cf443fd416f5da6465068e95dc366811d112242 (patch) | |
tree | 57119e1d43d171d3f9bf2d27d6c5302d2169a5a4 | |
parent | 4d87306fbe06674b16f188fea187282f29c0dc58 (diff) | |
download | podman-2cf443fd416f5da6465068e95dc366811d112242.tar.gz podman-2cf443fd416f5da6465068e95dc366811d112242.tar.bz2 podman-2cf443fd416f5da6465068e95dc366811d112242.zip |
Ensure that attach ready channel does not block
We only use this channel in terminal attach, and it was not a
buffered channel originally, so it would block on trying to send
unless a receiver was ready. In the non-terminal case, there was
no receiver, so attach blocked forever. Buffer the channel for a
single bool so that it will never block, even if unused.
Fixes #8154
Signed-off-by: Matthew Heon <mheon@redhat.com>
-rw-r--r-- | libpod/container_api.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libpod/container_api.go b/libpod/container_api.go index aef37dd59..a9808a30e 100644 --- a/libpod/container_api.go +++ b/libpod/container_api.go @@ -249,7 +249,7 @@ func (c *Container) Attach(streams *define.AttachStreams, keys string, resize <- // attaching, and I really do not want to do that right now. // Send a SIGWINCH after attach succeeds so that most programs will // redraw the screen for the new attach session. - attachRdy := make(chan bool) + attachRdy := make(chan bool, 1) if c.config.Spec.Process != nil && c.config.Spec.Process.Terminal { go func() { <-attachRdy |