diff --git a/packer/rpc/communicator.go b/packer/rpc/communicator.go index c47036399..d4823a49a 100644 --- a/packer/rpc/communicator.go +++ b/packer/rpc/communicator.go @@ -132,7 +132,12 @@ func (c *communicator) Start(cmd *packer.RemoteCmd) (err error) { func (c *communicator) Upload(path string, r io.Reader, fi *os.FileInfo) (err error) { // Pipe the reader through to the connection streamId := c.mux.NextId() - go serveSingleCopy("uploadData", c.mux, streamId, nil, r) + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + serveSingleCopy("uploadData", c.mux, streamId, nil, r) + }() args := CommunicatorUploadArgs{ Path: path, @@ -144,6 +149,7 @@ func (c *communicator) Upload(path string, r io.Reader, fi *os.FileInfo) (err er } err = c.client.Call("Communicator.Upload", &args, new(interface{})) + wg.Wait() return }