diff options
| author | Petter Rasmussen | 2016-02-20 23:11:23 +0100 | 
|---|---|---|
| committer | Petter Rasmussen | 2016-02-20 23:39:11 +0100 | 
| commit | a9e9da783481fcb8022eb52fb944cb9ee13997de (patch) | |
| tree | f817301b74f0f1787e310c8d6f2560bbb9cce457 /drive/sync_upload.go | |
| parent | 308c7dceac93e7496453332139aac006da408629 (diff) | |
| download | gdrive-a9e9da783481fcb8022eb52fb944cb9ee13997de.tar.bz2 | |
Wrap media uploads in TimeoutReader
Diffstat (limited to 'drive/sync_upload.go')
| -rw-r--r-- | drive/sync_upload.go | 14 | 
1 files changed, 10 insertions, 4 deletions
| diff --git a/drive/sync_upload.go b/drive/sync_upload.go index a94e507..7a0833a 100644 --- a/drive/sync_upload.go +++ b/drive/sync_upload.go @@ -305,9 +305,12 @@ func (self *Drive) uploadMissingFile(parentId string, lf *LocalFile, args Upload      chunkSize := googleapi.ChunkSize(int(args.ChunkSize))      // Wrap file in progress reader -    srcReader := getProgressReader(srcFile, args.Progress, lf.info.Size()) +    progressReader := getProgressReader(srcFile, args.Progress, lf.info.Size()) -    _, err = self.service.Files.Create(dstFile).Fields("id", "name", "size", "md5Checksum").Media(srcReader, chunkSize).Do() +    // Wrap reader in timeout reader +    reader, ctx := getTimeoutReaderContext(progressReader) + +    _, err = self.service.Files.Create(dstFile).Fields("id", "name", "size", "md5Checksum").Context(ctx).Media(reader, chunkSize).Do()      if err != nil {          if isBackendError(err) && try < MaxBackendErrorRetries {              exponentialBackoffSleep(try) @@ -341,9 +344,12 @@ func (self *Drive) updateChangedFile(cf *changedFile, args UploadSyncArgs, try i      chunkSize := googleapi.ChunkSize(int(args.ChunkSize))      // Wrap file in progress reader -    srcReader := getProgressReader(srcFile, args.Progress, cf.local.info.Size()) +    progressReader := getProgressReader(srcFile, args.Progress, cf.local.info.Size()) + +    // Wrap reader in timeout reader +    reader, ctx := getTimeoutReaderContext(progressReader) -    _, err = self.service.Files.Update(cf.remote.file.Id, dstFile).Media(srcReader, chunkSize).Do() +    _, err = self.service.Files.Update(cf.remote.file.Id, dstFile).Context(ctx).Media(reader, chunkSize).Do()      if err != nil {          if isBackendError(err) && try < MaxBackendErrorRetries {              exponentialBackoffSleep(try) | 
