diff --git a/src/sync.d b/src/sync.d index 64263e28..f2543526 100644 --- a/src/sync.d +++ b/src/sync.d @@ -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