diff options
-rw-r--r-- | src/rgw/rgw_op.cc | 9 | ||||
-rw-r--r-- | src/rgw/rgw_rest_s3.h | 5 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 4e9553940f6..39e32047c1e 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -661,7 +661,12 @@ void RGWListBuckets::execute() do { RGWUserBuckets buckets; - uint64_t read_count = min(limit - total_count, max_buckets); + uint64_t read_count; + if (limit > 0) + read_count = min(limit - total_count, max_buckets); + else + read_count = max_buckets; + ret = rgw_read_user_buckets(store, s->user.user_id, buckets, marker, read_count, should_get_stats()); @@ -680,7 +685,7 @@ void RGWListBuckets::execute() total_count += m.size(); - done = (m.size() < read_count || total_count == limit); + done = (m.size() < read_count || (limit > 0 && total_count == limit)); if (m.size()) { send_response_data(buckets); diff --git a/src/rgw/rgw_rest_s3.h b/src/rgw/rgw_rest_s3.h index bf97c1a2993..ea8e5edc2cb 100644 --- a/src/rgw/rgw_rest_s3.h +++ b/src/rgw/rgw_rest_s3.h @@ -25,7 +25,10 @@ public: RGWListBuckets_ObjStore_S3() {} ~RGWListBuckets_ObjStore_S3() {} - int get_params() { return 0; } + int get_params() { + limit = 0; /* no limit */ + return 0; + } virtual void send_response_begin(bool has_buckets); virtual void send_response_data(RGWUserBuckets& buckets); virtual void send_response_end(); |