diff options
author | Peter Hunt <pehunt@redhat.com> | 2019-10-31 10:41:26 -0400 |
---|---|---|
committer | Peter Hunt <pehunt@redhat.com> | 2019-10-31 11:20:12 -0400 |
commit | 1df4dba0a0c335ad68b1c2202b8099cd87aa3d94 (patch) | |
tree | b19dfe0cda86f5248bd6627725a7e86e5381c61d /libpod | |
parent | 9ba8dae0bfa5a5e894cf80e2ed114f6ca4bceb60 (diff) | |
download | podman-1df4dba0a0c335ad68b1c2202b8099cd87aa3d94.tar.gz podman-1df4dba0a0c335ad68b1c2202b8099cd87aa3d94.tar.bz2 podman-1df4dba0a0c335ad68b1c2202b8099cd87aa3d94.zip |
Switch to bufio Reader for exec streams
There were many situations that made exec act funky with input. pipes didn't work as expected, as well as sending input before the shell opened.
Thinking about it, it seemed as though the issues were because of how os.Stdin buffers (it doesn't). Dropping this input had some weird consequences.
Instead, read from os.Stdin as bufio.Reader, allowing the input to buffer before passing it to the container.
Signed-off-by: Peter Hunt <pehunt@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/container_api.go | 3 | ||||
-rw-r--r-- | libpod/healthcheck.go | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/libpod/container_api.go b/libpod/container_api.go index 1b2d52ce3..a6f5b54d5 100644 --- a/libpod/container_api.go +++ b/libpod/container_api.go @@ -1,6 +1,7 @@ package libpod import ( + "bufio" "context" "io" "io/ioutil" @@ -361,7 +362,7 @@ type AttachStreams struct { // ErrorStream will be attached to container's STDERR ErrorStream io.WriteCloser // InputStream will be attached to container's STDIN - InputStream io.Reader + InputStream *bufio.Reader // AttachOutput is whether to attach to STDOUT // If false, stdout will not be attached AttachOutput bool diff --git a/libpod/healthcheck.go b/libpod/healthcheck.go index 68ffc2349..e9c950713 100644 --- a/libpod/healthcheck.go +++ b/libpod/healthcheck.go @@ -133,7 +133,9 @@ func (c *Container) runHealthCheck() (HealthCheckStatus, error) { streams := new(AttachStreams) streams.OutputStream = hcw streams.ErrorStream = hcw - streams.InputStream = os.Stdin + + streams.InputStream = bufio.NewReader(os.Stdin) + streams.AttachOutput = true streams.AttachError = true streams.AttachInput = true |