Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorClaudio Cambra <claudio.cambra@gmail.com>2022-10-03 18:22:36 +0300
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>2022-10-04 12:52:23 +0300
commit2f571337f18e559152521accb65d858905907b75 (patch)
tree56c21a6f649eee49f56b48bb7661e85cc0d1c513 /src
parentff5261eaf142bd725d2a2076fc152d0389f2349d (diff)
Ensure we are checking lock state without affecting sync behaviour
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/libsync/discovery.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp
index 4583380b1..95a23c06b 100644
--- a/src/libsync/discovery.cpp
+++ b/src/libsync/discovery.cpp
@@ -521,6 +521,15 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(
}
}
+ // We need to make sure that we update the info in the database if the lockstate has changed
+ const auto checkFileLockState = [&item, &dbEntry, &serverEntry] {
+ const bool isServerEntryLocked = serverEntry.locked == SyncFileItem::LockStatus::LockedItem;
+
+ if(isServerEntryLocked != dbEntry._lockstate._locked) {
+ item->_instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
+ }
+ };
+
// The file is known in the db already
if (dbEntry.isValid()) {
const bool isDbEntryAnE2EePlaceholder = dbEntry.isVirtualFile() && !dbEntry.e2eMangledName().isEmpty();
@@ -528,7 +537,6 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(
const bool isVirtualE2EePlaceholder = isDbEntryAnE2EePlaceholder && serverEntry.size >= Constants::e2EeTagSize;
const qint64 sizeOnServer = isVirtualE2EePlaceholder ? serverEntry.size - Constants::e2EeTagSize : serverEntry.size;
const bool metaDataSizeNeedsUpdateForE2EeFilePlaceholder = isVirtualE2EePlaceholder && dbEntry._fileSize == serverEntry.size;
- const bool isServerEntryLocked = serverEntry.locked == SyncFileItem::LockStatus::LockedItem;
if (serverEntry.isDirectory != dbEntry.isDirectory()) {
// If the type of the entity changed, it's like NEW, but
@@ -575,8 +583,6 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(
}
item->_instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
item->_direction = SyncFileItem::Down;
- } else if(isServerEntryLocked != dbEntry._lockstate._locked) {
- item->_instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
} else {
// if (is virtual mode enabled and folder is encrypted - check if the size is the same as on the server and then - trigger server query
// to update a placeholder with corrected size (-16 Bytes)
@@ -605,10 +611,12 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(
return ParentNotChanged;
}();
+ checkFileLockState();
processFileAnalyzeLocalInfo(item, path, localEntry, serverEntry, dbEntry, serverQueryMode);
return;
}
+ checkFileLockState();
processFileAnalyzeLocalInfo(item, path, localEntry, serverEntry, dbEntry, _queryServer);
return;
}