diff options
| author | Petter Rasmussen | 2016-02-20 23:30:30 +0100 | 
|---|---|---|
| committer | Petter Rasmussen | 2016-02-20 23:39:12 +0100 | 
| commit | 28c4eb923fd01d892a17844328d0090830bcd229 (patch) | |
| tree | ead9f5722894f36c3b641df89a2226ce9094b4dd /drive/sync_download.go | |
| parent | a9e9da783481fcb8022eb52fb944cb9ee13997de (diff) | |
| download | gdrive-28c4eb923fd01d892a17844328d0090830bcd229.tar.bz2 | |
Wrap downloads in TimeoutReader
Diffstat (limited to 'drive/sync_download.go')
| -rw-r--r-- | drive/sync_download.go | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/drive/sync_download.go b/drive/sync_download.go index fb7b3ae..5016cc1 100644 --- a/drive/sync_download.go +++ b/drive/sync_download.go @@ -187,7 +187,10 @@ func (self *Drive) downloadRemoteFile(id, fpath string, args DownloadSyncArgs, t          return nil      } -    res, err := self.service.Files.Get(id).Download() +    // Get timeout reader wrapper and context +    timeoutReaderWrapper, ctx := getTimeoutReaderWrapperContext() + +    res, err := self.service.Files.Get(id).Context(ctx).Download()      if err != nil {          if isBackendError(err) && try < MaxBackendErrorRetries {              exponentialBackoffSleep(try) @@ -202,7 +205,10 @@ func (self *Drive) downloadRemoteFile(id, fpath string, args DownloadSyncArgs, t      defer res.Body.Close()      // Wrap response body in progress reader -    srcReader := getProgressReader(res.Body, args.Progress, res.ContentLength) +    progressReader := getProgressReader(res.Body, args.Progress, res.ContentLength) + +    // Wrap reader in timeout reader +    reader := timeoutReaderWrapper(progressReader)      // Ensure any parent directories exists      if err = mkdir(fpath); err != nil { @@ -219,7 +225,7 @@ func (self *Drive) downloadRemoteFile(id, fpath string, args DownloadSyncArgs, t      }      // Save file to disk -    _, err = io.Copy(outFile, srcReader) +    _, err = io.Copy(outFile, reader)      if err != nil {          outFile.Close()          if try < MaxBackendErrorRetries { | 
