diff --git a/backup-partition.rsc b/backup-partition.rsc index ae7ad030..88ab3b60 100644 --- a/backup-partition.rsc +++ b/backup-partition.rsc @@ -35,12 +35,12 @@ :onerror Err { /partitions/copy-to $FallbackTo; $LogPrint info $ScriptName ("Copied RouterOS to partition '" . $FallbackToName . "'."); + :return true; } do={ $LogPrint error $ScriptName ("Failed copying RouterOS to partition '" . \ $FallbackToName . "': " . $Err); :return false; } - :return true; } :if ([ $ScriptLock $ScriptName ] = false) do={ diff --git a/global-functions.rsc b/global-functions.rsc index 8331e4a7..34bc60f5 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -391,22 +391,25 @@ :local Url ("https://upgrade.mikrotik.com/routeros/" . $PkgVer . "/" . $PkgFile); $LogPrint info $0 ("Downloading package file '" . $PkgName . "'..."); $LogPrint debug $0 ("... from url: " . $Url); + :local Retry 3; + :while ($Retry > 0) do={ + :onerror Err { + /tool/fetch check-certificate=yes-without-crl $Url dst-path=$PkgDest; + $WaitForFile $PkgDest; - :onerror Err { - /tool/fetch check-certificate=yes-without-crl $Url dst-path=$PkgDest; - $WaitForFile $PkgDest; - } do={ - $LogPrint warning $0 ("Downloading package file '" . $PkgName . "' failed: " . $Err); - :return false; - } + :if ([ /file/get [ find where name=$PkgDest ] type ] = "package") do={ + :return true; + } + } do={ + $LogPrint debug $0 ("Downloading package file failed: " . $Err); + } - :if ([ /file/get [ find where name=$PkgDest ] type ] != "package") do={ - $LogPrint warning $0 ("Downloaded file is not a package, removing."); $RmFile $PkgDest; - :return false; + :set Retry ($Retry - 1); } - :return true; + $LogPrint warning $0 ("Downloading package file '" . $PkgName . "' failed."); + :return false; } # return either first (if "true") or second