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.
This commit is contained in:
Christian Kamm 2019-04-10 10:48:03 +02:00 committed by Kevin Ottens
parent da40e84aec
commit 7b96321df2
No known key found for this signature in database
GPG key ID: 074BBBCB8DECC9E2
3 changed files with 9 additions and 5 deletions

View file

@ -382,7 +382,6 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(
missingData.append(tr("file id")); missingData.append(tr("file id"));
if (!missingData.isEmpty()) { if (!missingData.isEmpty()) {
item->_instruction = CSYNC_INSTRUCTION_ERROR; item->_instruction = CSYNC_INSTRUCTION_ERROR;
item->_status = SyncFileItem::NormalError;
_childIgnored = true; _childIgnored = true;
item->_errorString = tr("server reported no %1").arg(missingData.join(QLatin1String(", "))); item->_errorString = tr("server reported no %1").arg(missingData.join(QLatin1String(", ")));
emit _discoveryData->itemDiscovered(item); emit _discoveryData->itemDiscovered(item);
@ -1145,13 +1144,11 @@ bool ProcessDirectoryJob::checkPermissions(const OCC::SyncFileItemPtr &item)
} else if (item->isDirectory() && !perms.hasPermission(RemotePermissions::CanAddSubDirectories)) { } else if (item->isDirectory() && !perms.hasPermission(RemotePermissions::CanAddSubDirectories)) {
qCWarning(lcDisco) << "checkForPermission: ERROR" << item->_file; qCWarning(lcDisco) << "checkForPermission: ERROR" << item->_file;
item->_instruction = CSYNC_INSTRUCTION_ERROR; 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"); item->_errorString = tr("Not allowed because you don't have permission to add subfolders to that folder");
return false; return false;
} else if (!item->isDirectory() && !perms.hasPermission(RemotePermissions::CanAddFile)) { } else if (!item->isDirectory() && !perms.hasPermission(RemotePermissions::CanAddFile)) {
qCWarning(lcDisco) << "checkForPermission: ERROR" << item->_file; qCWarning(lcDisco) << "checkForPermission: ERROR" << item->_file;
item->_instruction = CSYNC_INSTRUCTION_ERROR; 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"); item->_errorString = tr("Not allowed because you don't have permission to add files in that folder");
return false; return false;
} }

View file

@ -350,7 +350,15 @@ public:
void start() override void start() override
{ {
SyncFileItem::Status status = _item->_status; 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);
} }
}; };

View file

@ -353,7 +353,6 @@ void OCC::SyncEngine::slotItemDiscovered(const OCC::SyncFileItemPtr &item)
QString error; QString error;
if (!_syncOptions._vfs->updateMetadata(filePath, item->_modtime, item->_size, item->_fileId, &error)) { if (!_syncOptions._vfs->updateMetadata(filePath, item->_modtime, item->_size, item->_fileId, &error)) {
item->_instruction = CSYNC_INSTRUCTION_ERROR; item->_instruction = CSYNC_INSTRUCTION_ERROR;
item->_status = SyncFileItem::NormalError;
item->_errorString = tr("Could not update virtual file metadata: %1").arg(error); item->_errorString = tr("Could not update virtual file metadata: %1").arg(error);
return; return;
} }