[#268] client: Fix PatchPayload method
All checks were successful
DCO / DCO (pull_request) Successful in 2m2s
Tests and linters / Tests (pull_request) Successful in 2m47s
Tests and linters / Lint (pull_request) Successful in 3m33s

* Make the method `PatchPayload` send a patch with empty
  payload patch if range's length is non-zero and if it's the
  first call.
* Empty payload patches just cut original object payload. So, these
  patches are also valid.

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
This commit is contained in:
Airat Arifullin 2024-09-11 13:13:46 +03:00
parent 7d84d104fb
commit 9ef9e51500

View file

@ -178,6 +178,20 @@ func (x *objectPatcher) PatchPayload(_ context.Context, rng *object.Range, paylo
return false return false
} }
if n == 0 { if n == 0 {
if rng.GetLength() != 0 && x.firstPatchPayload {
x.firstPatchPayload = false
// the empty patch just cuts `rng.GetLength()` bytes from original object payload
if !x.patch(&object.Patch{
Address: x.addr,
PayloadPatch: &object.PayloadPatch{
Range: rng,
Chunk: []byte{},
},
}) {
return false
}
}
break break
} }