summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@pm.me>2020-07-10 16:17:34 -0400
committerMatthew Heon <matthew.heon@pm.me>2020-07-22 14:41:17 -0400
commitce829a2a8436cc621c0a9ea66b5856df02473212 (patch)
treec4e5aa9e5aa3c9120b31afd7bc78d7ce47f7884f
parent0630d19b34c6cea674fc5f830fe308b8a1206259 (diff)
downloadpodman-ce829a2a8436cc621c0a9ea66b5856df02473212.tar.gz
podman-ce829a2a8436cc621c0a9ea66b5856df02473212.tar.bz2
podman-ce829a2a8436cc621c0a9ea66b5856df02473212.zip
Correctly print STDOUT on non-terminal remote exec
I confused STDIN and STDOUT's file descriptors (it's 0 and 1, I thought they were 1 and 0). As such, we were looking at whether we wanted to print STDIN when we looked to print STDOUT. This bool was set when `-i` was set in at the `podman exec` command line, which masked the problem when it was set. Fixes #6890 Fixes #6891 Fixes #6892 Signed-off-by: Matthew Heon <matthew.heon@pm.me>
-rw-r--r--pkg/bindings/containers/attach.go8
-rw-r--r--test/e2e/exec_test.go1
2 files changed, 4 insertions, 5 deletions
diff --git a/pkg/bindings/containers/attach.go b/pkg/bindings/containers/attach.go
index 077bb244f..297563688 100644
--- a/pkg/bindings/containers/attach.go
+++ b/pkg/bindings/containers/attach.go
@@ -457,15 +457,15 @@ func ExecStartAndAttach(ctx context.Context, sessionID string, streams *define.A
switch {
case fd == 0:
- if streams.AttachOutput {
+ if streams.AttachInput {
+ // Write STDIN to STDOUT (echoing characters
+ // typed by another attach session)
if _, err := streams.OutputStream.Write(frame[0:l]); err != nil {
return err
}
}
case fd == 1:
- if streams.AttachInput {
- // Write STDIN to STDOUT (echoing characters
- // typed by another attach session)
+ if streams.AttachOutput {
if _, err := streams.OutputStream.Write(frame[0:l]); err != nil {
return err
}
diff --git a/test/e2e/exec_test.go b/test/e2e/exec_test.go
index 5a519413e..736376207 100644
--- a/test/e2e/exec_test.go
+++ b/test/e2e/exec_test.go
@@ -98,7 +98,6 @@ var _ = Describe("Podman exec", func() {
It("podman exec os.Setenv env", func() {
// remote doesn't properly interpret os.Setenv
- SkipIfRemote()
setup := podmanTest.RunTopContainer("test1")
setup.WaitWithDefaultTimeout()
Expect(setup.ExitCode()).To(Equal(0))