diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-07-13 12:23:23 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-07-13 12:23:23 -0400 |
commit | 28929a1e33ab5f6f9c7aa841a0cd7c34760dd290 (patch) | |
tree | fb98a6b5d9bc549eb543d944ef35970ec064ebb2 | |
parent | 9b0e9e82daf7998cfd9e5b932bf35d76e61eb8ab (diff) | |
download | stasis-28929a1e33ab5f6f9c7aa841a0cd7c34760dd290.tar.gz |
Exposes STASIS_DOWNLOAD_TIMEOUT environment variable
* Sets the connection timeout for libcurl to 30, instead of 300.
-rw-r--r-- | src/download.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/download.c b/src/download.c index 1623560..f83adda 100644 --- a/src/download.c +++ b/src/download.c @@ -3,6 +3,7 @@ // #include <string.h> +#include <stdlib.h> #include "download.h" size_t download_writer(void *fp, size_t size, size_t nmemb, void *stream) { @@ -18,6 +19,8 @@ long download(char *url, const char *filename, char **errmsg) { FILE *fp; char user_agent[20]; sprintf(user_agent, "stasis/%s", VERSION); + long timeout = 30L; + char *timeout_str = getenv("STASIS_DOWNLOAD_TIMEOUT"); curl_global_init(CURL_GLOBAL_ALL); c = curl_easy_init(); @@ -27,11 +30,18 @@ long download(char *url, const char *filename, char **errmsg) { if (!fp) { return -1; } + curl_easy_setopt(c, CURLOPT_VERBOSE, 0L); curl_easy_setopt(c, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(c, CURLOPT_USERAGENT, user_agent); curl_easy_setopt(c, CURLOPT_NOPROGRESS, 0L); curl_easy_setopt(c, CURLOPT_WRITEDATA, fp); + + if (timeout_str) { + timeout = strtol(timeout_str, NULL, 10); + } + curl_easy_setopt(c, CURLOPT_CONNECTTIMEOUT, timeout); + curl_code = curl_easy_perform(c); if (curl_code != CURLE_OK) { if (errmsg) { |