Merge pull request #1982 from calmh/fix-1978
Sanitize rescan interval values (fixes #1978)
This commit is contained in:
commit
0f1b40da71
|
@ -28,6 +28,7 @@ import (
|
||||||
const (
|
const (
|
||||||
OldestHandledVersion = 5
|
OldestHandledVersion = 5
|
||||||
CurrentVersion = 10
|
CurrentVersion = 10
|
||||||
|
MaxRescanIntervalS = 365 * 24 * 60 * 60
|
||||||
)
|
)
|
||||||
|
|
||||||
type Configuration struct {
|
type Configuration struct {
|
||||||
|
@ -330,6 +331,12 @@ func (cfg *Configuration) prepare(myID protocol.DeviceID) {
|
||||||
folder.ID = "default"
|
folder.ID = "default"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if folder.RescanIntervalS > MaxRescanIntervalS {
|
||||||
|
folder.RescanIntervalS = MaxRescanIntervalS
|
||||||
|
} else if folder.RescanIntervalS < 0 {
|
||||||
|
folder.RescanIntervalS = 0
|
||||||
|
}
|
||||||
|
|
||||||
if seen, ok := seenFolders[folder.ID]; ok {
|
if seen, ok := seenFolders[folder.ID]; ok {
|
||||||
l.Warnf("Multiple folders with ID %q; disabling", folder.ID)
|
l.Warnf("Multiple folders with ID %q; disabling", folder.ID)
|
||||||
|
|
||||||
|
|
|
@ -578,3 +578,17 @@ func TestPullOrder(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLargeRescanInterval(t *testing.T) {
|
||||||
|
wrapper, err := Load("testdata/largeinterval.xml", device1)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if wrapper.Folders()["l1"].RescanIntervalS != MaxRescanIntervalS {
|
||||||
|
t.Error("too large rescan interval should be maxed out")
|
||||||
|
}
|
||||||
|
if wrapper.Folders()["l2"].RescanIntervalS != 0 {
|
||||||
|
t.Error("negative rescan interval should become zero")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
<configuration version="10">
|
||||||
|
<folder id="l1" path="~/Sync" rescanIntervalS="60000000000"></folder>
|
||||||
|
<folder id="l2" path="~/Sync" rescanIntervalS="-1"></folder>
|
||||||
|
</configuration>
|
Loading…
Reference in New Issue