From 26c93af5652a39b773240e7f4fd452263ae38104 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 4 Jul 2023 04:56:30 +0530 Subject: [PATCH] ... --- tools/rsync/algorithm.go | 2 ++ tools/rsync/api.go | 4 +++- tools/rsync/api_test.go | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/rsync/algorithm.go b/tools/rsync/algorithm.go index c02530f96..d9a133f34 100644 --- a/tools/rsync/algorithm.go +++ b/tools/rsync/algorithm.go @@ -82,6 +82,7 @@ func (self *Operation) Unserialize(data []byte) (n int, err error) { return -1, io.ErrShortBuffer } self.BlockIndex = bin.Uint64(data[1:]) + self.Data = nil case OpBlockRange: n = 13 if len(data) < n { @@ -89,6 +90,7 @@ func (self *Operation) Unserialize(data []byte) (n int, err error) { } self.BlockIndex = bin.Uint64(data[1:]) self.BlockIndexEnd = self.BlockIndex + uint64(bin.Uint32(data[9:])) + self.Data = nil case OpHash: n = 3 if len(data) < n { diff --git a/tools/rsync/api.go b/tools/rsync/api.go index a85b36abd..30e20853d 100644 --- a/tools/rsync/api.go +++ b/tools/rsync/api.go @@ -116,7 +116,9 @@ func (self *Patcher) update_delta(data []byte) (consumed int, err error) { if err = self.rsync.ApplyDelta(self.delta_output, self.delta_input, op); err != nil { return } - self.total_data_in_delta += len(op.Data) + if op.Type == OpData { + self.total_data_in_delta += len(op.Data) + } } else { if n < 0 { return consumed, nil diff --git a/tools/rsync/api_test.go b/tools/rsync/api_test.go index 2fc0d9d11..00e4645ed 100644 --- a/tools/rsync/api_test.go +++ b/tools/rsync/api_test.go @@ -24,7 +24,7 @@ func TestRsyncRoundtrip(t *testing.T) { random_patch := func(data []byte) (size int) { if offset := random.Int(len(data)); offset < len(data) { - max_size := utils.Min(256, len(data)-offset) + max_size := utils.Min(257, len(data)-offset) if size = random.Int(max_size); size > 0 { total_patch_size += size random.Bytes(data[offset : offset+size])