[#268] client: Make PayloadPatch correctly receive empty patch payload

* 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-12 15:12:52 +03:00
parent f0c599d06d
commit d342c0bc16
2 changed files with 102 additions and 0 deletions

View file

@ -175,6 +175,21 @@ func (x *objectPatcher) PatchPayload(_ context.Context, rng *object.Range, paylo
return false
}
if n == 0 {
if patchIter == 0 {
if rng.GetLength() == 0 {
x.err = errors.New("zero-length empty payload patch can't be applied")
return false
}
if !x.patch(&object.Patch{
Address: x.addr,
PayloadPatch: &object.PayloadPatch{
Range: rng,
Chunk: []byte{},
},
}) {
return false
}
}
break
}