about summary refs log tree commit diff
path: root/src/libstore
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/download.cc2
-rw-r--r--src/libstore/globals.hh3
2 files changed, 5 insertions, 0 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc
index 42fd05bd80d7..4d502219ed86 100644
--- a/src/libstore/download.cc
+++ b/src/libstore/download.cc
@@ -249,6 +249,8 @@ struct CurlDownloader : public Downloader
                 curl_easy_setopt(req, CURLOPT_SSL_VERIFYHOST, 0);
             }
 
+            curl_easy_setopt(req, CURLOPT_CONNECTTIMEOUT, settings.connectTimeout.get());
+
             /* If no file exist in the specified path, curl continues to work
                anyway as if netrc support was disabled. */
             curl_easy_setopt(req, CURLOPT_NETRC_FILE, settings.netrcFile.get().c_str());
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index f3a6038cafae..72863920de99 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -270,6 +270,9 @@ public:
     struct CaseHackTag { };
     Setting<bool, CaseHackTag> useCaseHack{this, nix::useCaseHack, "use-case-hack",
         "Whether to enable a Darwin-specific hack for dealing with file name collisions."};
+
+    Setting<unsigned long> connectTimeout{this, 0, "connect-timeout",
+        "Timeout for connecting to servers during downloads. 0 means use curl's builtin default."};
 };