Skip to content

Commit d959ed4

Browse files
committed
Merge pull request src-d#1 from bodji/rc2
Serve file in goroutine to avoid race condition for oneShot downloads
2 parents 1b407b9 + 7db37ec commit d959ed4

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

server/plik.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -424,11 +424,14 @@ func getFileHandler(resp http.ResponseWriter, req *http.Request) {
424424
defer fileReader.Close()
425425

426426
// Copy content to response
427-
_, err = io.Copy(resp, fileReader)
428-
if err != nil {
429-
log.Printf("Error while copying file to response : %s", err)
430-
return
431-
}
427+
resultChan := make(chan error)
428+
go func() {
429+
_, err = io.Copy(resp, fileReader)
430+
if err != nil {
431+
log.Printf("Error while copying file to response : %s", err)
432+
}
433+
resultChan <- err
434+
}()
432435

433436
// Remove if oneShot
434437
if upload.OneShot {
@@ -443,6 +446,10 @@ func getFileHandler(resp http.ResponseWriter, req *http.Request) {
443446
return
444447
}
445448
}
449+
450+
// Waiting for the write of the file
451+
// to be finished before ending handler
452+
<-resultChan
446453
}
447454
}
448455

0 commit comments

Comments
 (0)