From be9ee1d138751b949ab4d765778fbdb8b49e79f6 Mon Sep 17 00:00:00 2001 From: rafma0 Date: Sun, 3 Apr 2022 17:14:46 -0300 Subject: [PATCH] putio: fix multithread download and other ranged requests Before this change the 206 responses from putio Range requests were being returned as errors. This change checks for 200 and 206 in the GET response now. --- backend/putio/error.go | 10 ++++++---- backend/putio/object.go | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/backend/putio/error.go b/backend/putio/error.go index 27476b838..ff3fed1d5 100644 --- a/backend/putio/error.go +++ b/backend/putio/error.go @@ -12,11 +12,13 @@ import ( "github.com/rclone/rclone/lib/pacer" ) -func checkStatusCode(resp *http.Response, expected int) error { - if resp.StatusCode != expected { - return &statusCodeError{response: resp} +func checkStatusCode(resp *http.Response, expected ...int) error { + for _, code := range expected { + if resp.StatusCode == code { + return nil + } } - return nil + return &statusCodeError{response: resp} } type statusCodeError struct { diff --git a/backend/putio/object.go b/backend/putio/object.go index 4b5f72015..28caa5d1e 100644 --- a/backend/putio/object.go +++ b/backend/putio/object.go @@ -244,7 +244,7 @@ func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (in io.Read if err != nil { return shouldRetry(ctx, err) } - if err := checkStatusCode(resp, 200); err != nil { + if err := checkStatusCode(resp, 200, 206); err != nil { return shouldRetry(ctx, err) } return false, nil