mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-09 14:50:56 +00:00
Relevant much earlier changes:9b1c592fb7
bd1c29ee32
Make sure vanilla and rolling adler are consistent. And that they match with scanner.Validate.
This commit is contained in:
parent
57f47bcf83
commit
90e248615f
@ -1525,7 +1525,7 @@ func (m *model) Request(deviceID protocol.DeviceID, folder, name string, size in
|
||||
|
||||
if !scanner.Validate(res.data, hash, weakHash) {
|
||||
m.recheckFile(deviceID, folder, name, offset, hash)
|
||||
l.Debugf("%v REQ(in) failed validating data (%v): %s: %q / %q o=%d s=%d", m, err, deviceID, folder, name, offset, size)
|
||||
l.Debugf("%v REQ(in) failed validating data: %s: %q / %q o=%d s=%d", m, deviceID, folder, name, offset, size)
|
||||
return nil, protocol.ErrNoSuchFile
|
||||
}
|
||||
|
||||
|
@ -123,7 +123,9 @@ func TestAdler32Variants(t *testing.T) {
|
||||
hf1.Reset()
|
||||
hf2.Reset()
|
||||
|
||||
return sum1 == sum2
|
||||
// Make sure whatever we use in Validate matches too resp. this
|
||||
// tests gets adjusted if we ever switch the weak hash algo.
|
||||
return sum1 == sum2 && Validate(data, nil, sum1)
|
||||
}
|
||||
|
||||
// protocol block sized data
|
||||
@ -141,8 +143,7 @@ func TestAdler32Variants(t *testing.T) {
|
||||
}
|
||||
|
||||
// rolling should have the same result as the individual blocks
|
||||
// themselves. Which is not the same as the original non-rollind adler32
|
||||
// blocks.
|
||||
// themselves.
|
||||
|
||||
windowSize := 128
|
||||
|
||||
@ -152,10 +153,14 @@ func TestAdler32Variants(t *testing.T) {
|
||||
for i := windowSize; i < len(data); i++ {
|
||||
if i%windowSize == 0 {
|
||||
// let the reference function catch up
|
||||
window := data[i-windowSize : i]
|
||||
hf1.Reset()
|
||||
hf1.Write(window)
|
||||
hf2.Reset()
|
||||
hf2.Write(data[i-windowSize : i])
|
||||
hf2.Write(window)
|
||||
|
||||
// verify that they are in sync with the rolling function
|
||||
sum1 := hf1.Sum32()
|
||||
sum2 := hf2.Sum32()
|
||||
sum3 := hf3.Sum32()
|
||||
t.Logf("At i=%d, sum2=%08x, sum3=%08x", i, sum2, sum3)
|
||||
@ -163,6 +168,13 @@ func TestAdler32Variants(t *testing.T) {
|
||||
t.Errorf("Mismatch after roll; i=%d, sum2=%08x, sum3=%08x", i, sum2, sum3)
|
||||
break
|
||||
}
|
||||
if sum1 != sum3 {
|
||||
t.Errorf("Mismatch after roll; i=%d, sum1=%08x, sum3=%08x", i, sum1, sum3)
|
||||
break
|
||||
}
|
||||
if !Validate(window, nil, sum1) {
|
||||
t.Errorf("Validation failure after roll; i=%d", i)
|
||||
}
|
||||
}
|
||||
hf3.Roll(data[i])
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user