Skip to content

Commit 22b4fe3

Browse files
committed
Add curl timeouts to installer downloads
1 parent 9426e9f commit 22b4fe3

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

install.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ REPO_NAME="atlassian-cli"
66
INSTALL_DIR="${INSTALL_DIR:-${HOME}/.local/bin}"
77
INSTALL_RELEASE_API_URL="${INSTALL_RELEASE_API_URL:-https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/releases/latest}"
88
INSTALL_RELEASE_DOWNLOAD_BASE="${INSTALL_RELEASE_DOWNLOAD_BASE:-https://github.com/${REPO_OWNER}/${REPO_NAME}/releases/download}"
9+
INSTALL_CURL_CONNECT_TIMEOUT="${INSTALL_CURL_CONNECT_TIMEOUT:-10}"
10+
INSTALL_CURL_MAX_TIME="${INSTALL_CURL_MAX_TIME:-120}"
911

1012
TMP_ROOT=""
1113

@@ -78,7 +80,8 @@ resolve_tag() {
7880
return
7981
fi
8082

81-
metadata="$(curl -fsSL "${INSTALL_RELEASE_API_URL}")" || die "failed to resolve latest release"
83+
metadata="$(curl -fsSL --connect-timeout "${INSTALL_CURL_CONNECT_TIMEOUT}" --max-time "${INSTALL_CURL_MAX_TIME}" "${INSTALL_RELEASE_API_URL}")" ||
84+
die "failed to resolve latest release"
8285
tag="$(printf '%s' "${metadata}" | tr -d '\n' | sed -n 's/.*"tag_name"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')"
8386
[ -n "${tag}" ] || die "failed to parse tag_name from release metadata"
8487
printf '%s' "${tag}"
@@ -88,7 +91,10 @@ download_file() {
8891
url="$1"
8992
destination="$2"
9093
log "Downloading ${url}"
91-
curl --fail --location --progress-bar "${url}" -o "${destination}"
94+
curl --fail --location --progress-bar \
95+
--connect-timeout "${INSTALL_CURL_CONNECT_TIMEOUT}" \
96+
--max-time "${INSTALL_CURL_MAX_TIME}" \
97+
"${url}" -o "${destination}"
9298
}
9399

94100
archive_name() {

tests/release/test_install_script.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,3 +388,7 @@ def test_install_script_uses_curl_progress_bar_for_downloads() -> None:
388388
script = INSTALL_SCRIPT.read_text()
389389

390390
assert "curl --fail --location --progress-bar" in script
391+
assert 'INSTALL_CURL_CONNECT_TIMEOUT="${INSTALL_CURL_CONNECT_TIMEOUT:-10}"' in script
392+
assert 'INSTALL_CURL_MAX_TIME="${INSTALL_CURL_MAX_TIME:-120}"' in script
393+
assert '--connect-timeout "${INSTALL_CURL_CONNECT_TIMEOUT}"' in script
394+
assert '--max-time "${INSTALL_CURL_MAX_TIME}"' in script

0 commit comments

Comments
 (0)