diff --git a/src/libstore-test-support/https-store.cc b/src/libstore-test-support/https-store.cc index 5d5238958..3cbe0c789 100644 --- a/src/libstore-test-support/https-store.cc +++ b/src/libstore-test-support/https-store.cc @@ -50,9 +50,11 @@ void HttpsBinaryCacheStoreTest::SetUp() // clang-format off openssl({"ecparam", "-genkey", "-name", "prime256v1", "-out", caKey.string()}); openssl({"req", "-new", "-x509", "-days", "1", "-key", caKey.string(), "-out", caCert.string(), "-subj", "/CN=TestCA"}); + auto serverExtFile = tmpDir / "server.ext"; + writeFile(serverExtFile, "subjectAltName=DNS:localhost,IP:127.0.0.1"); openssl({"ecparam", "-genkey", "-name", "prime256v1", "-out", serverKey.string()}); - openssl({"req", "-new", "-key", serverKey.string(), "-out", (tmpDir / "server.csr").string(), "-subj", "/CN=localhost"}); - openssl({"x509", "-req", "-in", (tmpDir / "server.csr").string(), "-CA", caCert.string(), "-CAkey", caKey.string(), "-CAcreateserial", "-out", serverCert.string(), "-days", "1"}); + openssl({"req", "-new", "-key", serverKey.string(), "-out", (tmpDir / "server.csr").string(), "-subj", "/CN=localhost", "-addext", "subjectAltName=DNS:localhost,IP:127.0.0.1"}); + openssl({"x509", "-req", "-in", (tmpDir / "server.csr").string(), "-CA", caCert.string(), "-CAkey", caKey.string(), "-CAcreateserial", "-out", serverCert.string(), "-days", "1", "-extfile", serverExtFile.string()}); openssl({"ecparam", "-genkey", "-name", "prime256v1", "-out", clientKey.string()}); openssl({"req", "-new", "-key", clientKey.string(), "-out", (tmpDir / "client.csr").string(), "-subj", "/CN=TestClient"}); openssl({"x509", "-req", "-in", (tmpDir / "client.csr").string(), "-CA", caCert.string(), "-CAkey", caKey.string(), "-CAcreateserial", "-out", clientCert.string(), "-days", "1"}); diff --git a/src/libstore/filetransfer.cc b/src/libstore/filetransfer.cc index c55f0cb42..b8a9a9aa8 100644 --- a/src/libstore/filetransfer.cc +++ b/src/libstore/filetransfer.cc @@ -737,7 +737,7 @@ struct curlFileTransfer : public FileTransfer download after a while. If we're writing to a sink, we can only retry if the server supports ranged requests. */ - if (err == Transient && attempt < request.tries + if (err == Transient && attempt < fileTransfer.settings.tries && (!this->request.dataCallback || writtenToSink == 0 || (acceptRanges && encoding.empty()))) { int ms = retryTimeMs * std::pow( diff --git a/src/libstore/include/nix/store/filetransfer.hh b/src/libstore/include/nix/store/filetransfer.hh index 1bab158e8..48c1b5a2f 100644 --- a/src/libstore/include/nix/store/filetransfer.hh +++ b/src/libstore/include/nix/store/filetransfer.hh @@ -182,7 +182,6 @@ struct FileTransferRequest Headers headers; std::string expectedETag; HttpMethod method = HttpMethod::Get; - size_t tries = fileTransferSettings.tries; unsigned int baseRetryTimeMs = RETRY_TIME_MS_DEFAULT; ActivityId parentAct; bool decompress = true;