aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAniket Deshpande <anicake@gmail.com>2019-06-28 19:43:22 +0530
committerAniket Deshpande <anicake@gmail.com>2019-06-28 20:44:46 +0530
commitec58ba38c55a3ab61fdb1da7d746251e4887ea2c (patch)
tree73b029b529c6aea6d0e971a2cd6455d3802b1e0e /src
parent6847c9278840edc97f1ef85b5fafac4338fb1b37 (diff)
Fix `http2 = false` having no effect. Fixes #2971.
Setting `http2 = false` in nix config (e.g. /etc/nix/nix.conf) had no effect, and `nix-env -vvvvv -i hello` still downloaded .nar packages using HTTP/2. In `src/libstore/download.cc`, the `CURL_HTTP_VERSION_2TLS` option was being explicitly set when `downloadSettings.enableHttp2` was `true`, but, `CURL_HTTP_VERSION_1_1` option was not being explicitly set when `downloadSettings.enableHttp2` was `false`. This may be because `https://curl.haxx.se/libcurl/c/libcurl-env.html` states: "You have to set this option if you want to use libcurl's HTTP/2 support." but, also, in the changelog, states: "DEFAULT Since curl 7.62.0: CURL_HTTP_VERSION_2TLS Before that: CURL_HTTP_VERSION_1_1" So, the default setting for `libcurl` is HTTP/2 for version >= 7.62.0. In this commit, option `CURLOPT_HTTP_VERSION` is explicitly set to `CURL_HTTP_VERSION_1_1` when `downloadSettings.enableHttp2` nix config setting is `false`. This can be tested by running `nix-env -vvvvv -i hello | grep HTTP`
Diffstat (limited to 'src')
-rw-r--r--src/libstore/download.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc
index 6ce9525c3..0c5a73ea3 100644
--- a/src/libstore/download.cc
+++ b/src/libstore/download.cc
@@ -244,6 +244,8 @@ struct CurlDownloader : public Downloader
#if LIBCURL_VERSION_NUM >= 0x072f00
if (downloadSettings.enableHttp2)
curl_easy_setopt(req, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
+ else
+ curl_easy_setopt(req, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
#endif
curl_easy_setopt(req, CURLOPT_WRITEFUNCTION, DownloadItem::writeCallbackWrapper);
curl_easy_setopt(req, CURLOPT_WRITEDATA, this);