diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-03-26 09:01:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-26 09:01:26 +0100 |
commit | 18c15300b2f904f5c88ffd9876dec5b493332ca8 (patch) | |
tree | 2c3bce783ac4416c03934d4c5a96e5b055cfa6fc | |
parent | ff0124aee1ca700be3b7357b992a220cdacfddfd (diff) | |
parent | 1313f8a4504000e43512810937701347bf252cfc (diff) | |
download | podman-18c15300b2f904f5c88ffd9876dec5b493332ca8.tar.gz podman-18c15300b2f904f5c88ffd9876dec5b493332ca8.tar.bz2 podman-18c15300b2f904f5c88ffd9876dec5b493332ca8.zip |
Merge pull request #5613 from mheon/reorder_exec_resize
Ensure that exec sends resize events
-rw-r--r-- | libpod/container_exec.go | 10 | ||||
-rw-r--r-- | libpod/oci_conmon_linux.go | 1 |
2 files changed, 6 insertions, 5 deletions
diff --git a/libpod/container_exec.go b/libpod/container_exec.go index 7ed7a3343..6b88e5205 100644 --- a/libpod/container_exec.go +++ b/libpod/container_exec.go @@ -575,7 +575,7 @@ func (c *Container) ExecResize(sessionID string, newSize remotecommand.TerminalS return errors.Wrapf(define.ErrNoSuchExecSession, "container %s has no exec session with ID %s", c.ID(), sessionID) } - logrus.Infof("Removing container %s exec session %s", c.ID(), session.ID()) + logrus.Infof("Resizing container %s exec session %s to %+v", c.ID(), session.ID(), newSize) if session.State != define.ExecStateRunning { return errors.Wrapf(define.ErrExecSessionStateInvalid, "cannot resize container %s exec session %s as it is not running", c.ID(), session.ID()) @@ -592,9 +592,6 @@ func (c *Container) Exec(config *ExecConfig, streams *AttachStreams, resize <-ch if err != nil { return -1, err } - if err := c.ExecStartAndAttach(sessionID, streams); err != nil { - return -1, err - } // Start resizing if we have a resize channel. // This goroutine may likely leak, given that we cannot close it here. @@ -605,6 +602,7 @@ func (c *Container) Exec(config *ExecConfig, streams *AttachStreams, resize <-ch // session. if resize != nil { go func() { + logrus.Debugf("Sending resize events to exec session %s", sessionID) for resizeRequest := range resize { if err := c.ExecResize(sessionID, resizeRequest); err != nil { // Assume the exec session went down. @@ -615,6 +613,10 @@ func (c *Container) Exec(config *ExecConfig, streams *AttachStreams, resize <-ch }() } + if err := c.ExecStartAndAttach(sessionID, streams); err != nil { + return -1, err + } + session, err := c.ExecSession(sessionID) if err != nil { return -1, err diff --git a/libpod/oci_conmon_linux.go b/libpod/oci_conmon_linux.go index 82c5d7020..6d9a976cb 100644 --- a/libpod/oci_conmon_linux.go +++ b/libpod/oci_conmon_linux.go @@ -793,7 +793,6 @@ func (r *ConmonOCIRuntime) ExecAttachResize(ctr *Container, sessionID string, ne } defer controlFile.Close() - logrus.Debugf("Received a resize event for container %s exec session %s: %+v", ctr.ID(), sessionID, newSize) if _, err = fmt.Fprintf(controlFile, "%d %d %d\n", 1, newSize.Height, newSize.Width); err != nil { return errors.Wrapf(err, "failed to write to ctl file to resize terminal") } |