rclone/fs/operations
Nick Craig-Wood 93955b755f operations: fix retries downloading too much data with certain backends
Before this fix if more than one retry happened on a file that rclone
had opened for read with a backend that uses fs.FixRangeOption then
rclone would read too much data and the transfer would fail.

Backends affected:

- azureblob, azurefiles, b2, box, dropbox, fichier, filefabric
- googlecloudstorage, hidrive, imagekit, jottacloud, koofr, netstorage
- onedrive, opendrive, oracleobjectstorage, pikpak, premiumizeme
- protondrive, qingstor, quatrix, s3, sharefile, sugarsync, swift
- uptobox, webdav, zoho

This was because rclone was emitting Range requests for the wrong data
range on the second and subsequent retries.

This was caused by fs.FixRangeOption modifying the options and the
reopen code relying on them not being modified.

This fix makes a copy of the fs.FixRangeOption in the reopen code to
fix the problem.

In future it might be best to change fs.FixRangeOption so it returns a
new options slice.

Fixes #7759
2024-04-13 19:25:15 +01:00
..
operationsflags sync: report list of synced paths to file -- see #7282 2024-01-20 14:50:08 -05:00
check.go vfs: fix unicode normalization on macOS - fixes #7072 2024-03-06 16:12:13 +00:00
check_test.go operations: skip backends incapable of testing TestApplyTransforms - #7591 2024-02-13 15:07:41 -05:00
copy.go copy: fix nil pointer dereference when corrupted on transfer with nil dst 2024-04-02 15:34:58 +01:00
copy_test.go operations: fix very long file names when using copy with --partial 2024-03-30 09:06:58 +00:00
dedupe.go accounting: Make checkers show what they are doing 2023-03-01 11:10:38 +00:00
dedupe_test.go test: replace defer cleanup with t.Cleanup 2022-12-09 14:38:05 +00:00
listdirsorted_test.go test: replace defer cleanup with t.Cleanup 2022-12-09 14:38:05 +00:00
logger.go operations: remove stray debug 2024-03-07 17:15:43 +00:00
lsjson.go lsjson,lsf: make sure metadata appears for directories 2024-02-28 16:26:14 +00:00
lsjson_test.go lsjson,lsf: make sure metadata appears for directories 2024-02-28 16:26:14 +00:00
multithread.go operations: use built in io.OffsetWriter for go1.20 2024-01-15 16:22:07 +00:00
multithread_test.go rc: add srcFs and dstFs to core/stats and core/transferred stats 2024-02-02 11:43:10 +00:00
operations.go bisync: add to integration tests - fixes #7665 2024-03-27 10:50:14 -04:00
operations_internal_test.go fs: deglobalise the config #4685 2020-11-26 16:40:12 +00:00
operations_test.go operations: Fix "optional feature not implemented" error with a crypted sftp 2024-03-22 17:36:04 +00:00
rc.go rc: fix stats groups being ignored in operations/check 2024-03-26 11:23:40 +00:00
rc_test.go operations: add operations/hashsum to the rc as rclone hashsum equivalent 2024-02-29 16:21:42 +00:00
reopen.go operations: fix retries downloading too much data with certain backends 2024-04-13 19:25:15 +01:00
reopen_test.go operations: fix retries downloading too much data with certain backends 2024-04-13 19:25:15 +01:00