From 9ee97aaa2a26e1401a59829b5104012aeac65bbe Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Mon, 3 Jul 2017 13:30:11 -0700 Subject: [PATCH] while I'm at it, kill this race condition in uploads, too --- packer/rpc/communicator.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 }