aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/msgstore.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/msgstore.go b/lib/msgstore.go
index d2d4b6e6..74a021a7 100644
--- a/lib/msgstore.go
+++ b/lib/msgstore.go
@@ -14,6 +14,7 @@ import (
// Accesses to fields must be guarded by MessageStore.Lock/Unlock
type MessageStore struct {
+ sync.Mutex
Deleted map[uint32]interface{}
DirInfo models.DirectoryInfo
Messages map[uint32]*models.MessageInfo
@@ -247,7 +248,9 @@ func (store *MessageStore) Update(msg types.WorkerMessage) {
store.Messages[msg.Info.Uid] = msg.Info
}
if msg.NeedsFlags {
+ store.Lock()
store.needsFlags = append(store.needsFlags, msg.Info.Uid)
+ store.Unlock()
store.fetchFlags()
}
seen := false
@@ -757,9 +760,11 @@ func (store *MessageStore) fetchFlags() {
store.fetchFlagsDebounce.Stop()
}
store.fetchFlagsDebounce = time.AfterFunc(store.fetchFlagsDelay, func() {
+ store.Lock()
store.worker.PostAction(&types.FetchMessageFlags{
Uids: store.needsFlags,
}, nil)
store.needsFlags = []uint32{}
+ store.Unlock()
})
}