@@ -257,6 +257,7 @@ func (u *upstream) applyCreates(files []*fileInformation) error {
257257func (u * upstream ) uploadArchive (file * os.File , fileSize string , writtenFiles map [string ]* fileInformation ) error {
258258 u .config .fileIndex .fileMapMutex .Lock ()
259259 defer u .config .fileIndex .fileMapMutex .Unlock ()
260+ defer file .Close ()
260261
261262 u .config .Logf ("[Upstream] Upload %d create changes (size %s)" , len (writtenFiles ), fileSize )
262263
@@ -287,30 +288,26 @@ func (u *upstream) uploadArchive(file *os.File, fileSize string, writtenFiles ma
287288 echo "` + EndAck + `";
288289 ` // We need that extra new line or otherwise the command is not sent
289290
290- if u .stdinPipe != nil {
291- // Write command
292- _ , err := u .stdinPipe .Write ([]byte (cmd ))
293- if err != nil {
294- return errors .Trace (err )
295- }
296-
297- // Wait till confirmation
298- err = waitTill (StartAck , u .stdoutPipe )
299- if err != nil {
300- return errors .Trace (err )
301- }
291+ // Write command
292+ _ , err := u .stdinPipe .Write ([]byte (cmd ))
293+ if err != nil {
294+ return errors .Trace (err )
295+ }
302296
303- // Send file through stdin to remote
304- _ , err = io .Copy (u .stdinPipe , file )
305- if err != nil {
306- return errors .Trace (err )
307- }
297+ // Wait till confirmation
298+ err = waitTill (StartAck , u .stdoutPipe )
299+ if err != nil {
300+ return errors .Trace (err )
308301 }
309302
310- file .Close ()
303+ // Send file through stdin to remote
304+ _ , err = io .Copy (u .stdinPipe , file )
305+ if err != nil {
306+ return errors .Trace (err )
307+ }
311308
312309 // Delete local file
313- err : = os .Remove (file .Name ())
310+ err = os .Remove (file .Name ())
314311 if err != nil {
315312 return errors .Trace (err )
316313 }
0 commit comments