Move some Download-specific settings to download.cc
This commit is contained in:
		
							parent
							
								
									737ed88f35
								
							
						
					
					
						commit
						c1d445ecec
					
				
					 3 changed files with 25 additions and 22 deletions
				
			
		|  | @ -29,6 +29,26 @@ using namespace std::string_literals; | ||||||
| 
 | 
 | ||||||
| namespace nix { | namespace nix { | ||||||
| 
 | 
 | ||||||
|  | struct DownloadSettings : Config | ||||||
|  | { | ||||||
|  |     Setting<bool> enableHttp2{this, true, "http2", | ||||||
|  |         "Whether to enable HTTP/2 support."}; | ||||||
|  | 
 | ||||||
|  |     Setting<std::string> userAgentSuffix{this, "", "user-agent-suffix", | ||||||
|  |         "String appended to the user agent in HTTP requests."}; | ||||||
|  | 
 | ||||||
|  |     Setting<size_t> httpConnections{this, 25, "http-connections", | ||||||
|  |         "Number of parallel HTTP connections.", | ||||||
|  |         {"binary-caches-parallel-connections"}}; | ||||||
|  | 
 | ||||||
|  |     Setting<unsigned long> connectTimeout{this, 0, "connect-timeout", | ||||||
|  |         "Timeout for connecting to servers during downloads. 0 means use curl's builtin default."}; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static DownloadSettings downloadSettings; | ||||||
|  | 
 | ||||||
|  | static GlobalConfig::Register r1(&downloadSettings); | ||||||
|  | 
 | ||||||
| std::string resolveUri(const std::string & uri) | std::string resolveUri(const std::string & uri) | ||||||
| { | { | ||||||
|     if (uri.compare(0, 8, "channel:") == 0) |     if (uri.compare(0, 8, "channel:") == 0) | ||||||
|  | @ -54,8 +74,6 @@ struct CurlDownloader : public Downloader | ||||||
|     std::random_device rd; |     std::random_device rd; | ||||||
|     std::mt19937 mt19937; |     std::mt19937 mt19937; | ||||||
| 
 | 
 | ||||||
|     bool enableHttp2; |  | ||||||
| 
 |  | ||||||
|     struct DownloadItem : public std::enable_shared_from_this<DownloadItem> |     struct DownloadItem : public std::enable_shared_from_this<DownloadItem> | ||||||
|     { |     { | ||||||
|         CurlDownloader & downloader; |         CurlDownloader & downloader; | ||||||
|  | @ -221,12 +239,12 @@ struct CurlDownloader : public Downloader | ||||||
|             curl_easy_setopt(req, CURLOPT_NOSIGNAL, 1); |             curl_easy_setopt(req, CURLOPT_NOSIGNAL, 1); | ||||||
|             curl_easy_setopt(req, CURLOPT_USERAGENT, |             curl_easy_setopt(req, CURLOPT_USERAGENT, | ||||||
|                 ("curl/" LIBCURL_VERSION " Nix/" + nixVersion + |                 ("curl/" LIBCURL_VERSION " Nix/" + nixVersion + | ||||||
|                     (settings.userAgentSuffix != "" ? " " + settings.userAgentSuffix.get() : "")).c_str()); |                     (downloadSettings.userAgentSuffix != "" ? " " + downloadSettings.userAgentSuffix.get() : "")).c_str()); | ||||||
|             #if LIBCURL_VERSION_NUM >= 0x072b00 |             #if LIBCURL_VERSION_NUM >= 0x072b00 | ||||||
|             curl_easy_setopt(req, CURLOPT_PIPEWAIT, 1); |             curl_easy_setopt(req, CURLOPT_PIPEWAIT, 1); | ||||||
|             #endif |             #endif | ||||||
|             #if LIBCURL_VERSION_NUM >= 0x072f00 |             #if LIBCURL_VERSION_NUM >= 0x072f00 | ||||||
|             if (downloader.enableHttp2) |             if (downloadSettings.enableHttp2) | ||||||
|                 curl_easy_setopt(req, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS); |                 curl_easy_setopt(req, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS); | ||||||
|             #endif |             #endif | ||||||
|             curl_easy_setopt(req, CURLOPT_WRITEFUNCTION, DownloadItem::writeCallbackWrapper); |             curl_easy_setopt(req, CURLOPT_WRITEFUNCTION, DownloadItem::writeCallbackWrapper); | ||||||
|  | @ -258,7 +276,7 @@ struct CurlDownloader : public Downloader | ||||||
|                 curl_easy_setopt(req, CURLOPT_SSL_VERIFYHOST, 0); |                 curl_easy_setopt(req, CURLOPT_SSL_VERIFYHOST, 0); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             curl_easy_setopt(req, CURLOPT_CONNECTTIMEOUT, settings.connectTimeout.get()); |             curl_easy_setopt(req, CURLOPT_CONNECTTIMEOUT, downloadSettings.connectTimeout.get()); | ||||||
| 
 | 
 | ||||||
|             curl_easy_setopt(req, CURLOPT_LOW_SPEED_LIMIT, 1L); |             curl_easy_setopt(req, CURLOPT_LOW_SPEED_LIMIT, 1L); | ||||||
|             curl_easy_setopt(req, CURLOPT_LOW_SPEED_TIME, lowSpeedTimeout); |             curl_easy_setopt(req, CURLOPT_LOW_SPEED_TIME, lowSpeedTimeout); | ||||||
|  | @ -401,11 +419,9 @@ struct CurlDownloader : public Downloader | ||||||
|         #endif |         #endif | ||||||
|         #if LIBCURL_VERSION_NUM >= 0x071e00 // Max connections requires >= 7.30.0
 |         #if LIBCURL_VERSION_NUM >= 0x071e00 // Max connections requires >= 7.30.0
 | ||||||
|         curl_multi_setopt(curlm, CURLMOPT_MAX_TOTAL_CONNECTIONS, |         curl_multi_setopt(curlm, CURLMOPT_MAX_TOTAL_CONNECTIONS, | ||||||
|             settings.binaryCachesParallelConnections.get()); |             downloadSettings.httpConnections.get()); | ||||||
|         #endif |         #endif | ||||||
| 
 | 
 | ||||||
|         enableHttp2 = settings.enableHttp2; |  | ||||||
| 
 |  | ||||||
|         wakeupPipe.create(); |         wakeupPipe.create(); | ||||||
|         fcntl(wakeupPipe.readSide.get(), F_SETFL, O_NONBLOCK); |         fcntl(wakeupPipe.readSide.get(), F_SETFL, O_NONBLOCK); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -256,13 +256,6 @@ public: | ||||||
|     Setting<Strings> secretKeyFiles{this, {}, "secret-key-files", |     Setting<Strings> secretKeyFiles{this, {}, "secret-key-files", | ||||||
|         "Secret keys with which to sign local builds."}; |         "Secret keys with which to sign local builds."}; | ||||||
| 
 | 
 | ||||||
|     Setting<size_t> binaryCachesParallelConnections{this, 25, "http-connections", |  | ||||||
|         "Number of parallel HTTP connections.", |  | ||||||
|         {"binary-caches-parallel-connections"}}; |  | ||||||
| 
 |  | ||||||
|     Setting<bool> enableHttp2{this, true, "http2", |  | ||||||
|         "Whether to enable HTTP/2 support."}; |  | ||||||
| 
 |  | ||||||
|     Setting<unsigned int> tarballTtl{this, 60 * 60, "tarball-ttl", |     Setting<unsigned int> tarballTtl{this, 60 * 60, "tarball-ttl", | ||||||
|         "How soon to expire files fetched by builtins.fetchTarball and builtins.fetchurl."}; |         "How soon to expire files fetched by builtins.fetchTarball and builtins.fetchurl."}; | ||||||
| 
 | 
 | ||||||
|  | @ -329,12 +322,6 @@ public: | ||||||
|     Setting<bool> enableImportFromDerivation{this, true, "allow-import-from-derivation", |     Setting<bool> enableImportFromDerivation{this, true, "allow-import-from-derivation", | ||||||
|         "Whether the evaluator allows importing the result of a derivation."}; |         "Whether the evaluator allows importing the result of a derivation."}; | ||||||
| 
 | 
 | ||||||
|     Setting<unsigned long> connectTimeout{this, 0, "connect-timeout", |  | ||||||
|         "Timeout for connecting to servers during downloads. 0 means use curl's builtin default."}; |  | ||||||
| 
 |  | ||||||
|     Setting<std::string> userAgentSuffix{this, "", "user-agent-suffix", |  | ||||||
|         "String appended to the user agent in HTTP requests."}; |  | ||||||
| 
 |  | ||||||
| #if __linux__ | #if __linux__ | ||||||
|     Setting<bool> filterSyscalls{this, true, "filter-syscalls", |     Setting<bool> filterSyscalls{this, true, "filter-syscalls", | ||||||
|             "Whether to prevent certain dangerous system calls, such as " |             "Whether to prevent certain dangerous system calls, such as " | ||||||
|  |  | ||||||
|  | @ -553,7 +553,7 @@ static void performOp(TunnelLogger * logger, ref<LocalStore> store, | ||||||
|                     ; |                     ; | ||||||
|                 else if (trusted |                 else if (trusted | ||||||
|                     || name == settings.buildTimeout.name |                     || name == settings.buildTimeout.name | ||||||
|                     || name == settings.connectTimeout.name) |                     || name == "connect-timeout") | ||||||
|                     settings.set(name, value); |                     settings.set(name, value); | ||||||
|                 else if (setSubstituters(settings.substituters)) |                 else if (setSubstituters(settings.substituters)) | ||||||
|                     ; |                     ; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue