From 4b02937862220c08fa77e87ca8e97380cd956283 Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Wed, 17 Mar 2021 20:46:13 +0100 Subject: [PATCH] lib/model: Add missing lock on availability func (#7487) --- lib/model/model.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/model/model.go b/lib/model/model.go index dbb7425f9..f6d534794 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -2717,10 +2717,16 @@ func (m *model) Availability(folder string, file protocol.FileInfo, block protoc } defer snap.Release() - return m.availabilityInSnapshot(cfg, snap, file, block), nil + return m.availabilityInSnapshotPRlocked(cfg, snap, file, block), nil } func (m *model) availabilityInSnapshot(cfg config.FolderConfiguration, snap *db.Snapshot, file protocol.FileInfo, block protocol.BlockInfo) []Availability { + m.pmut.RLock() + defer m.pmut.RUnlock() + return m.availabilityInSnapshotPRlocked(cfg, snap, file, block) +} + +func (m *model) availabilityInSnapshotPRlocked(cfg config.FolderConfiguration, snap *db.Snapshot, file protocol.FileInfo, block protocol.BlockInfo) []Availability { var availabilities []Availability for _, device := range snap.Availability(file.Name) { if _, ok := m.remotePausedFolders[device]; !ok {