From e6a0e523e2ca2f0c78a33a7d8134c06597bdb94b Mon Sep 17 00:00:00 2001 From: "Billie H. Cleek" Date: Thu, 8 Sep 2016 23:07:29 -0700 Subject: [PATCH] refactor sftp subsystem request handling Refactor the sftp subsystem request handling to make it more similar to an exec request. This simplifies and improves the readability of the code. --- provisioner/ansible/adapter.go | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/provisioner/ansible/adapter.go b/provisioner/ansible/adapter.go index 15cf886b7..0eb6bcda4 100644 --- a/provisioner/ansible/adapter.go +++ b/provisioner/ansible/adapter.go @@ -159,26 +159,13 @@ func (c *adapter) handleSession(newChannel ssh.NewChannel) error { if len(sftpCmd) == 0 { sftpCmd = "/usr/lib/sftp-server -e" } - cmd := &packer.RemoteCmd{ - Stdin: channel, - Stdout: channel, - Stderr: channel.Stderr(), - Command: sftpCmd, - } c.ui.Say("starting sftp subsystem") - if err := c.comm.Start(cmd); err != nil { - c.ui.Error(err.Error()) - req.Reply(false, nil) - close(done) - return - } - - req.Reply(true, nil) go func() { - cmd.Wait() + _ = c.remoteExec(sftpCmd, channel, channel, channel.Stderr()) close(done) }() + req.Reply(true, nil) default: c.ui.Error(fmt.Sprintf("unsupported subsystem requested: %s", req.Payload)) req.Reply(false, nil)