From 8d7635b1ac3eaea83fcf481994294eb137110e96 Mon Sep 17 00:00:00 2001 From: Matthew Heon Date: Thu, 12 Apr 2018 12:26:51 -0400 Subject: Change attach to accept a struct containing streams Comparing Go interfaces, like io.Reader, to nil does not work. As such, we need to include a bool with each stream telling whether to attach to it. Signed-off-by: Matthew Heon Closes: #608 Approved by: baude --- libpod/container_api.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'libpod/container_api.go') diff --git a/libpod/container_api.go b/libpod/container_api.go index fb6c70fd0..2d5c2bef3 100644 --- a/libpod/container_api.go +++ b/libpod/container_api.go @@ -1,7 +1,6 @@ package libpod import ( - "io" "io/ioutil" "os" "strconv" @@ -125,7 +124,7 @@ func (c *Container) Start() (err error) { // attach call. // The channel will be closed automatically after the result of attach has been // sent -func (c *Container) StartAndAttach(outputStream, errorStream io.WriteCloser, inputStream io.Reader, keys string, resize <-chan remotecommand.TerminalSize) (attachResChan <-chan error, err error) { +func (c *Container) StartAndAttach(streams *AttachStreams, keys string, resize <-chan remotecommand.TerminalSize) (attachResChan <-chan error, err error) { if !c.locked { c.lock.Lock() defer c.lock.Unlock() @@ -178,7 +177,7 @@ func (c *Container) StartAndAttach(outputStream, errorStream io.WriteCloser, inp // Attach to the container before starting it go func() { - if err := c.attach(outputStream, errorStream, inputStream, keys, resize); err != nil { + if err := c.attach(streams, keys, resize); err != nil { attachChan <- err } close(attachChan) @@ -406,7 +405,7 @@ func (c *Container) Exec(tty, privileged bool, env, cmd []string, user string) e } // Attach attaches to a container -func (c *Container) Attach(outputStream, errorStream io.WriteCloser, inputStream io.Reader, keys string, resize <-chan remotecommand.TerminalSize) error { +func (c *Container) Attach(streams *AttachStreams, keys string, resize <-chan remotecommand.TerminalSize) error { if !c.locked { c.lock.Lock() if err := c.syncContainer(); err != nil { @@ -421,7 +420,7 @@ func (c *Container) Attach(outputStream, errorStream io.WriteCloser, inputStream return errors.Wrapf(ErrCtrStateInvalid, "can only attach to created or running containers") } - return c.attach(outputStream, errorStream, inputStream, keys, resize) + return c.attach(streams, keys, resize) } // Mount mounts a container's filesystem on the host -- cgit v1.2.3-54-g00ecf