global-functions: $DownloadPackage: retry on error

This commit is contained in:
Christian Hesse 2019-12-05 11:43:46 +01:00
parent 7365bfa525
commit 64341690bf

View file

@ -215,22 +215,27 @@
:local PkgDest [ $CleanFilePath ($PkgDir . "/" . $PkgFile) ]; :local PkgDest [ $CleanFilePath ($PkgDir . "/" . $PkgFile) ];
$CertificateAvailable "Let's Encrypt Authority X3"; $CertificateAvailable "Let's Encrypt Authority X3";
:do {
/ tool fetch check-certificate=yes-without-crl \ :local Retry 3;
("https://upgrade.mikrotik.com/routeros/" . $PkgVer . "/" . $PkgFile) \ :while ($Retry > 0) do={
dst-path=$PkgDest; :do {
$WaitForFile $PkgDest; / tool fetch check-certificate=yes-without-crl \
} on-error={ ("https://upgrade.mikrotik.com/routeros/" . $PkgVer . "/" . $PkgFile) \
dst-path=$PkgDest;
$WaitForFile $PkgDest;
:if ([ / file get [ find where name=$PkgDest ] type ] = "package") do={
:return true;
}
} on-error={
# catch error and fall through
}
/ file remove [ find where name=$PkgDest ]; / file remove [ find where name=$PkgDest ];
:return false; :set Retry ($Retry - 1);
} }
:if ([ / file get [ find where name=$PkgDest ] type ] != "package") do={ :return false;
/ file remove [ find where name=$PkgDest ];
:return false;
}
:return true;
} }
# lock script against multiple invocation # lock script against multiple invocation