From be9d7d724ffee974814cc180549ef85367c8f08c Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 8 Dec 2022 15:57:04 +0100 Subject: [PATCH] do not use bulk upload for e2ee files Signed-off-by: Matthieu Gallien --- src/libsync/owncloudpropagator.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index e221ac327..380b8e2f4 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -943,7 +943,29 @@ Result OwncloudPropagator::staticUpdat bool OwncloudPropagator::isDelayedUploadItem(const SyncFileItemPtr &item) const { - return account()->capabilities().bulkUpload() && !_scheduleDelayedTasks && !item->_isEncrypted && _syncOptions._minChunkSize > item->_size && !isInBulkUploadBlackList(item->_file); + const auto checkFileShouldBeEncrypted = [this] (const SyncFileItemPtr &item) -> bool { + const auto path = item->_file; + const auto slashPosition = path.lastIndexOf('/'); + const auto parentPath = slashPosition >= 0 ? path.left(slashPosition) : QString(); + + SyncJournalFileRecord parentRec; + bool ok = _journal->getFileRecord(parentPath, &parentRec); + if (!ok) { + return false; + } + + const auto accountPtr = account(); + + if (!accountPtr->capabilities().clientSideEncryptionAvailable() || + !parentRec.isValid() || + !parentRec._isE2eEncrypted) { + return false; + } + + return true; + }; + + return account()->capabilities().bulkUpload() && !_scheduleDelayedTasks && !item->_isEncrypted && _syncOptions._minChunkSize > item->_size && !isInBulkUploadBlackList(item->_file) && !checkFileShouldBeEncrypted(item); } void OwncloudPropagator::setScheduleDelayedTasks(bool active)