From: Matthieu Gallien Date: Thu, 8 Dec 2022 14:57:04 +0000 (+0100) Subject: do not use bulk upload for e2ee files X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~11^2~81^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=be9d7d724ffee974814cc180549ef85367c8f08c;p=nextcloud-desktop.git do not use bulk upload for e2ee files Signed-off-by: Matthieu Gallien --- 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)