mirror of https://github.com/containers/podman.git
exec: Register resize func a bit later
if we register the resize func too early, it attempts to read from the 'ctl' file before it exists. this causes the func to error, and the resize to not go through. Fix this by registering resize func later for conmon. This, along with a conmon fix, will allow exec to know the terminal size at startup Signed-off-by: Peter Hunt <pehunt@redhat.com>
This commit is contained in:
parent
af8fedcc78
commit
1dcb771dbd
|
@ -107,8 +107,6 @@ func (c *Container) attachToExec(streams *AttachStreams, keys string, resize <-c
|
|||
|
||||
logrus.Debugf("Attaching to container %s exec session %s", c.ID(), sessionID)
|
||||
|
||||
registerResizeFunc(resize, c.execBundlePath(sessionID))
|
||||
|
||||
// set up the socket path, such that it is the correct length and location for exec
|
||||
socketPath := buildSocketPath(c.execAttachSocketPath(sessionID))
|
||||
|
||||
|
@ -116,6 +114,7 @@ func (c *Container) attachToExec(streams *AttachStreams, keys string, resize <-c
|
|||
if _, err := readConmonPipeData(attachFd, ""); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 2: then attach
|
||||
conn, err := net.DialUnix("unixpacket", nil, &net.UnixAddr{Name: socketPath, Net: "unixpacket"})
|
||||
if err != nil {
|
||||
|
@ -127,6 +126,10 @@ func (c *Container) attachToExec(streams *AttachStreams, keys string, resize <-c
|
|||
}
|
||||
}()
|
||||
|
||||
// Register the resize func after we've read the attach socket, as we know at this point the
|
||||
// 'ctl' file has been created in conmon
|
||||
registerResizeFunc(resize, c.execBundlePath(sessionID))
|
||||
|
||||
// start listening on stdio of the process
|
||||
receiveStdoutError, stdinDone := setupStdioChannels(streams, conn, detachKeys)
|
||||
|
||||
|
|
Loading…
Reference in New Issue