From ab849b3613fe4935379f00f8309958f36ee36d5c Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Mon, 5 Dec 2022 16:59:48 +0000 Subject: [PATCH] s3: fix listing loop when using v2 listing on v1 server Before this change, rclone would enter a listing loop if it used v2 listing on a v1 server and the list exceeded 1000 items. This change detects the problem and gives the user a helpful message. Fixes #6600 --- backend/s3/s3.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/s3/s3.go b/backend/s3/s3.go index 5fad59ae5..568805a6c 100644 --- a/backend/s3/s3.go +++ b/backend/s3/s3.go @@ -3195,6 +3195,9 @@ func (ls *v2List) List(ctx context.Context) (resp *s3.ListObjectsV2Output, versi if err != nil { return nil, nil, err } + if aws.BoolValue(resp.IsTruncated) && (resp.ContinuationToken == nil || *resp.ContinuationToken == "") { + return nil, nil, errors.New("s3 protocol error: received listing v2 with IsTruncated set and no ContinuationToken. Should you be using `--s3-list-version 1`?") + } ls.req.ContinuationToken = resp.NextContinuationToken return resp, nil, nil }