diff options
author | Jhon Honce <jhonce@redhat.com> | 2020-06-15 10:23:53 -0700 |
---|---|---|
committer | Jhon Honce <jhonce@redhat.com> | 2020-06-19 08:35:15 -0700 |
commit | bda4a6982f66107b4ca15ac815e86f2c121f9003 (patch) | |
tree | 424c94487edd43d69dede090a886f77c658a08a3 /pkg/bindings | |
parent | 1a2eb3e615fa05d77359295b870d7b3a0e4a5ed3 (diff) | |
download | podman-bda4a6982f66107b4ca15ac815e86f2c121f9003.tar.gz podman-bda4a6982f66107b4ca15ac815e86f2c121f9003.tar.bz2 podman-bda4a6982f66107b4ca15ac815e86f2c121f9003.zip |
Correct logic for demux'ing channels
* Move check for requesting output into case statement
Signed-off-by: Jhon Honce <jhonce@redhat.com>
Diffstat (limited to 'pkg/bindings')
-rw-r--r-- | pkg/bindings/containers/attach.go | 62 |
1 files changed, 34 insertions, 28 deletions
diff --git a/pkg/bindings/containers/attach.go b/pkg/bindings/containers/attach.go index 44c7f4002..22ab2d72d 100644 --- a/pkg/bindings/containers/attach.go +++ b/pkg/bindings/containers/attach.go @@ -178,25 +178,28 @@ func Attach(ctx context.Context, nameOrID string, detachKeys *string, logs, stre } switch { - case fd == 0 && isSet.stdout: - _, err := stdout.Write(frame[0:l]) - if err != nil { - return err + case fd == 0: + if isSet.stdout { + if _, err := stdout.Write(frame[0:l]); err != nil { + return err + } } - case fd == 1 && isSet.stdout: - _, err := stdout.Write(frame[0:l]) - if err != nil { - return err + case fd == 1: + if isSet.stdout { + if _, err := stdout.Write(frame[0:l]); err != nil { + return err + } } - case fd == 2 && isSet.stderr: - _, err := stderr.Write(frame[0:l]) - if err != nil { - return err + case fd == 2: + if isSet.stderr { + if _, err := stderr.Write(frame[0:l]); err != nil { + return err + } } case fd == 3: return fmt.Errorf("error from service from stream: %s", frame) default: - return fmt.Errorf("unrecognized channel in header: %d, 0-3 supported", fd) + return fmt.Errorf("unrecognized channel '%d' in header, 0-3 supported", fd) } } } @@ -453,27 +456,30 @@ func ExecStartAndAttach(ctx context.Context, sessionID string, streams *define.A } switch { - case fd == 0 && streams.AttachOutput: - _, err := streams.OutputStream.Write(frame[0:l]) - if err != nil { - return err + case fd == 0: + if streams.AttachOutput { + if _, err := streams.OutputStream.Write(frame[0:l]); err != nil { + return err + } } - case fd == 1 && streams.AttachInput: - // Write STDIN to STDOUT (echoing characters - // typed by another attach session) - _, err := streams.OutputStream.Write(frame[0:l]) - if err != nil { - return err + case fd == 1: + 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 == 2 && streams.AttachError: - _, err := streams.ErrorStream.Write(frame[0:l]) - if err != nil { - return err + case fd == 2: + if streams.AttachError { + if _, err := streams.ErrorStream.Write(frame[0:l]); err != nil { + return err + } } case fd == 3: return fmt.Errorf("error from service from stream: %s", frame) default: - return fmt.Errorf("unrecognized channel in header: %d, 0-3 supported", fd) + return fmt.Errorf("unrecognized channel '%d' in header, 0-3 supported", fd) } } } |