From 38e1e91d789d46376a244bf42080b9f3d32e76c1 Mon Sep 17 00:00:00 2001 From: Marina Biryukova Date: Mon, 18 Sep 2023 11:19:00 +0300 Subject: [PATCH] [#207] Fix part-number-marker handling Signed-off-by: Marina Biryukova --- api/handler/multipart_upload.go | 2 +- api/layer/multipart_upload.go | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/api/handler/multipart_upload.go b/api/handler/multipart_upload.go index 5e2ac39..04ec8b2 100644 --- a/api/handler/multipart_upload.go +++ b/api/handler/multipart_upload.go @@ -600,7 +600,7 @@ func (h *handler) ListPartsHandler(w http.ResponseWriter, r *http.Request) { } if queryValues.Get("part-number-marker") != "" { - if partNumberMarker, err = strconv.Atoi(queryValues.Get("part-number-marker")); err != nil || partNumberMarker <= 0 { + if partNumberMarker, err = strconv.Atoi(queryValues.Get("part-number-marker")); err != nil || partNumberMarker < 0 { h.logAndSendError(w, "invalid PartNumberMarker", reqInfo, err, additional...) return } diff --git a/api/layer/multipart_upload.go b/api/layer/multipart_upload.go index 73dae82..4e4fde5 100644 --- a/api/layer/multipart_upload.go +++ b/api/layer/multipart_upload.go @@ -548,6 +548,11 @@ func (n *layer) ListParts(ctx context.Context, p *ListPartsParams) (*ListPartsIn return parts[i].PartNumber < parts[j].PartNumber }) + if p.PartNumberMarker >= parts[len(parts)-1].PartNumber { + res.Parts = make([]*Part, 0) + return &res, nil + } + if p.PartNumberMarker != 0 { for i, part := range parts { if part.PartNumber > p.PartNumberMarker {