From 7b96321df2b2aba053d781b60cb7a78b8c803787 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Wed, 10 Apr 2019 10:48:03 +0200 Subject: [PATCH] PropagateIgnore: Default to NormalError for INSTRUCTION_ERROR Previously if one set the instruction to ERROR while forgetting to set an error status, it'd propagate as FileIgnored. Now the default is NormalError for INSTRUCTION_ERROR and FileIgnored for INSTRUCTION_IGNORE. --- src/libsync/discovery.cpp | 3 --- src/libsync/owncloudpropagator.h | 10 +++++++++- src/libsync/syncengine.cpp | 1 - 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 5cb62bbc1..5a838ad51 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -382,7 +382,6 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo( missingData.append(tr("file id")); if (!missingData.isEmpty()) { item->_instruction = CSYNC_INSTRUCTION_ERROR; - item->_status = SyncFileItem::NormalError; _childIgnored = true; item->_errorString = tr("server reported no %1").arg(missingData.join(QLatin1String(", "))); emit _discoveryData->itemDiscovered(item); @@ -1145,13 +1144,11 @@ bool ProcessDirectoryJob::checkPermissions(const OCC::SyncFileItemPtr &item) } else if (item->isDirectory() && !perms.hasPermission(RemotePermissions::CanAddSubDirectories)) { qCWarning(lcDisco) << "checkForPermission: ERROR" << item->_file; item->_instruction = CSYNC_INSTRUCTION_ERROR; - item->_status = SyncFileItem::NormalError; item->_errorString = tr("Not allowed because you don't have permission to add subfolders to that folder"); return false; } else if (!item->isDirectory() && !perms.hasPermission(RemotePermissions::CanAddFile)) { qCWarning(lcDisco) << "checkForPermission: ERROR" << item->_file; item->_instruction = CSYNC_INSTRUCTION_ERROR; - item->_status = SyncFileItem::NormalError; item->_errorString = tr("Not allowed because you don't have permission to add files in that folder"); return false; } diff --git a/src/libsync/owncloudpropagator.h b/src/libsync/owncloudpropagator.h index 6874a3a92..0febc6ab7 100644 --- a/src/libsync/owncloudpropagator.h +++ b/src/libsync/owncloudpropagator.h @@ -350,7 +350,15 @@ public: void start() override { SyncFileItem::Status status = _item->_status; - done(status == SyncFileItem::NoStatus ? SyncFileItem::FileIgnored : status, _item->_errorString); + if (status == SyncFileItem::NoStatus) { + if (_item->_instruction == CSYNC_INSTRUCTION_ERROR) { + status = SyncFileItem::NormalError; + } else { + status = SyncFileItem::FileIgnored; + ASSERT(_item->_instruction == CSYNC_INSTRUCTION_IGNORE); + } + } + done(status, _item->_errorString); } }; diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 4baff6cb1..d2d963cff 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -353,7 +353,6 @@ void OCC::SyncEngine::slotItemDiscovered(const OCC::SyncFileItemPtr &item) QString error; if (!_syncOptions._vfs->updateMetadata(filePath, item->_modtime, item->_size, item->_fileId, &error)) { item->_instruction = CSYNC_INSTRUCTION_ERROR; - item->_status = SyncFileItem::NormalError; item->_errorString = tr("Could not update virtual file metadata: %1").arg(error); return; }