diff --git a/src/Misc/externals.sh b/src/Misc/externals.sh index 4a1254f33..5e86a75d3 100755 --- a/src/Misc/externals.sh +++ b/src/Misc/externals.sh @@ -55,13 +55,23 @@ function acquireExternalTool() { # Download from source to the partial file. echo "Downloading $download_source" mkdir -p "$(dirname "$download_target")" || checkRC 'mkdir' + + CURL_VERSION=$(curl --version | awk 'NR==1{print $2}') + echo "Curl version: $CURL_VERSION" + # curl -f Fail silently (no output at all) on HTTP errors (H) # -k Allow connections to SSL sites without certs (H) # -S Show error. With -s, make curl show errors when they occur # -L Follow redirects (H) # -o FILE Write to FILE instead of stdout # --retry 3 Retries transient errors 3 times (timeouts, 5xx) - curl -fkSL --retry 3 -o "$partial_target" "$download_source" 2>"${download_target}_download.log" || checkRC 'curl' + if [[ "$(printf '%s\n' "7.71.0" "$CURL_VERSION" | sort -V | head -n1)" != "7.71.0" ]]; then + # Curl version is less than or equal to 7.71.0, skipping retry-all-errors flag + curl -fkSL --retry 3 -o "$partial_target" "$download_source" 2>"${download_target}_download.log" || checkRC 'curl' + else + # Curl version is greater than 7.71.0, running curl with --retry-all-errors flag + curl -fkSL --retry 3 --retry-all-errors -o "$partial_target" "$download_source" 2>"${download_target}_download.log" || checkRC 'curl' + fi # Move the partial file to the download target. mv "$partial_target" "$download_target" || checkRC 'mv'