mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-08 22:31:04 +00:00
lib/model: Fix race in GetIgnores (fixes #4300)
In addition this function returned an error when .stignore file was not present, which is perfectly valid. Also removed inconsistent nil check in ignores.go (only relevant for tests) and adjusted walk.go to do what it says in comments (check if Matcher is nil) to prevent nil deref in tests. Originally reported in: https://forum.syncthing.net/t/reason-for-panic-maybe-too-little-ram/10346 Regression from #3996 GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4301
This commit is contained in:
parent
77578e8aac
commit
ab8c2fb5c7
@ -1245,16 +1245,15 @@ func (m *Model) ConnectedTo(deviceID protocol.DeviceID) bool {
|
||||
|
||||
func (m *Model) GetIgnores(folder string) ([]string, []string, error) {
|
||||
m.fmut.RLock()
|
||||
defer m.fmut.RUnlock()
|
||||
|
||||
cfg, ok := m.folderCfgs[folder]
|
||||
m.fmut.RUnlock()
|
||||
if ok {
|
||||
if !cfg.HasMarker() {
|
||||
return nil, nil, fmt.Errorf("Folder %s stopped", folder)
|
||||
}
|
||||
|
||||
m.fmut.RLock()
|
||||
ignores := m.folderIgnores[folder]
|
||||
m.fmut.RUnlock()
|
||||
|
||||
return ignores.Lines(), ignores.Patterns(), nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user