Package: syncthing Version: 1.12.1~ds1-2 Severity: important Accepting a new folder can lead to missing files on initial sync. See upstream bug [1] and PR for details. This can lead to an inconsistent state, with files not being synced, thus I used severity important.
The patch fixing this is attached. [1]: https://github.com/syncthing/syncthing/issues/7649
diff --git a/lib/model/indexsender.go b/lib/model/indexsender.go
index 7bca774..8b9e02a 100644
--- a/lib/model/indexsender.go
+++ b/lib/model/indexsender.go
@@ -329,15 +329,15 @@ func (r *indexSenderRegistry) addLocked(folder config.FolderConfiguration, fset
// addPending stores the given info to start an index sender once resume is called
// for this folder.
// If an index sender is already running, it will be stopped.
-func (r *indexSenderRegistry) addPending(folder config.FolderConfiguration, startInfo *indexSenderStartInfo) {
+func (r *indexSenderRegistry) addPending(folderID string, startInfo *indexSenderStartInfo) {
r.mut.Lock()
defer r.mut.Unlock()
- if is, ok := r.indexSenders[folder.ID]; ok {
+ if is, ok := r.indexSenders[folderID]; ok {
r.sup.RemoveAndWait(is.token, 0)
- delete(r.indexSenders, folder.ID)
+ delete(r.indexSenders, folderID)
}
- r.startInfos[folder.ID] = startInfo
+ r.startInfos[folderID] = startInfo
}
// remove stops a running index sender or removes one pending to be started.
diff --git a/lib/model/model.go b/lib/model/model.go
index 64e7bc6..1558321 100644
--- a/lib/model/model.go
+++ b/lib/model/model.go
@@ -1252,7 +1252,7 @@ func (m *model) ccHandleFolders(folders []protocol.Folder, deviceCfg config.Devi
continue
}
m.cfg.AddOrUpdatePendingFolder(folder.ID, folder.Label, deviceID)
- indexSenders.addPending(cfg, ccDeviceInfos[folder.ID])
+ indexSenders.addPending(folder.ID, ccDeviceInfos[folder.ID])
changed = true
m.evLogger.Log(events.FolderRejected, map[string]string{
"folder": folder.ID,
@@ -1270,7 +1270,7 @@ func (m *model) ccHandleFolders(folders []protocol.Folder, deviceCfg config.Devi
}
if cfg.Paused {
- indexSenders.addPending(cfg, ccDeviceInfos[folder.ID])
+ indexSenders.addPending(cfg.ID, ccDeviceInfos[folder.ID])
continue
}
@@ -1312,7 +1312,7 @@ func (m *model) ccHandleFolders(folders []protocol.Folder, deviceCfg config.Devi
// Shouldn't happen because !cfg.Paused, but might happen
// if the folder is about to be unpaused, but not yet.
l.Debugln("ccH: no fset", folder.ID)
- indexSenders.addPending(cfg, ccDeviceInfos[folder.ID])
+ indexSenders.addPending(cfg.ID, ccDeviceInfos[folder.ID])
continue
}
OpenPGP_signature
Description: OpenPGP digital signature

