Size check should only be used if configured (Issue #540) (#541)

* Size check should only be used if configured
* Rather than make 2 x calls to OneDrive service, driveItem already has the size value to check
* Add a try block when query for file details
This commit is contained in:
abraunegg 2019-06-17 10:16:27 +10:00 committed by GitHub
parent 3d7843b237
commit 687080d435
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -963,9 +963,11 @@ final class SyncEngine
log.vdebug("OneDrive change is a new local item");
// Check if file should be skipped based on size limit
if (isItemFile(driveItem)) {
if (onedrive.getFileDetails(item.driveId, item.id)["size"].integer >= this.newSizeLimit) {
log.vlog("Skipping item - excluded by skip_size config: ", item.name, " (", onedrive.getFileDetails(item.driveId, item.id)["size"].integer/2^^20, " MB)");
return;
if (cfg.getValueLong("skip_size") != 0) {
if (driveItem["size"].integer >= this.newSizeLimit) {
log.vlog("Skipping item - excluded by skip_size config: ", item.name, " (", driveItem["size"].integer/2^^20, " MB)");
return;
}
}
}
applyNewItem(item, path);
@ -1097,7 +1099,20 @@ final class SyncEngine
{
assert(item.type == ItemType.file);
write("Downloading file ", path, " ... ");
JSONValue fileDetails = onedrive.getFileDetails(item.driveId, item.id);
JSONValue fileDetails;
try {
fileDetails = onedrive.getFileDetails(item.driveId, item.id);
} catch (OneDriveException e) {
if (e.httpStatusCode >= 500) {
// OneDrive returned a 'HTTP 5xx Server Side Error' - gracefully handling error - error message already logged
return;
} else {
// Default operation if not a 500 error
log.error("ERROR: Query of OneDrive for file details failed");
return;
}
}
if (isMalware(fileDetails)){
// OneDrive reports that this file is malware