From f4e9811034d67a33add92dc5e0a44ab59ffb842e Mon Sep 17 00:00:00 2001 From: Martin Prikryl Date: Fri, 8 Oct 2021 16:42:50 +0200 Subject: [PATCH] Incomplete listing on Backblaze S3 Contrary to AWS, Backblaze adds `IsTruncated` (and others) only after the `CommonPrefixes` and `Contents`. It's pagination is 1000, what is a multiple of libs3's `MAX_COMMON_PREFIXES`. So if you have prefixes-only listing, you get 125 callbacks with 32 `commonPrefixes` in each. None of them will have valid `isTruncated` yet. And in `listBucketCompleteCallback`, where `isTruncated` is finally known, both `contentsCount` and `commonPrefixesCount` will be zero, and the callback will not be triggered. --- src/bucket.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/bucket.c b/src/bucket.c index 6d30674..44d7e43 100644 --- a/src/bucket.c +++ b/src/bucket.c @@ -648,10 +648,7 @@ static void listBucketCompleteCallback(S3Status requestStatus, { ListBucketData *lbData = (ListBucketData *) callbackData; - // Make the callback if there is anything - if (lbData->contentsCount || lbData->commonPrefixesCount) { - make_list_bucket_callback(lbData); - } + make_list_bucket_callback(lbData); (*(lbData->responseCompleteCallback)) (requestStatus, s3ErrorDetails, lbData->callbackData);