If the file has a mangled name or will end up in a parent directory
known to be encrypted, we stick to the CSYNC_INTRUCTION_NEW instead of
going for CSYNC_INSTRUCTION_RENAME. This way we'll have a delete and an
upload instead of a move command.
Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
basePath.constData(), other ? "found" : "not found");
}
+ const auto curParentPath = [=]{
+ const auto slashPosition = cur->path.lastIndexOf('/');
+ if (slashPosition >= 0) {
+ return cur->path.left(slashPosition);
+ } else {
+ return QByteArray();
+ }
+ }();
+ auto curParent = our_tree->findFile(curParentPath);
+
if(!other) {
// Stick with the NEW
return;
+ } else if (!other->e2eMangledName.isEmpty() || (curParent && curParent->isE2eEncrypted)) {
+ // Stick with the NEW as well, we want to always issue delete + upload in such cases
+ return;
} else if (other->instruction == CSYNC_INSTRUCTION_RENAME) {
// Some other EVAL_RENAME already claimed other.
// We do nothing: maybe a different candidate for