From 9ab5244680450f3d8e21d593a18c8d07cc2fe26a Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 21 Apr 2024 10:42:41 +0100 Subject: substitutes: Add #:keep-alive? keyword argument to download-nar. To be consistent with other procedures that make network requests. * guix/substitutes.scm (download-nar): Add #:keep-alive? option. * guix/scripts/substitute.scm (process-substitution/fallback, process-substitution): Call download-nar with #:keep-alive? #t. Change-Id: I83b27d0c3a0916d058fbbbeb7aa77dbb8a742768 --- guix/scripts/substitute.scm | 6 ++++-- guix/substitutes.scm | 11 +++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index c74da618b5..68c24820c6 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -410,7 +410,8 @@ way to download the nar." #:prefer-fast-decompression? prefer-fast-decompression? #:open-connection-for-uri - open-connection-for-uri/cached)) + open-connection-for-uri/cached + #:keep-alive? #t)) (loop rest))) (() (loop rest))))))) @@ -463,7 +464,8 @@ PORT." #:print-build-trace? print-build-trace? #:prefer-fast-decompression? prefer-fast-decompression? #:open-connection-for-uri - open-connection-for-uri/cached)))) + open-connection-for-uri/cached + #:keep-alive? #t)))) (values narinfo expected-hash actual-hash))) diff --git a/guix/substitutes.scm b/guix/substitutes.scm index 5089f3a6da..7c8f8cc973 100644 --- a/guix/substitutes.scm +++ b/guix/substitutes.scm @@ -462,7 +462,8 @@ again." #:key deduplicate? print-build-trace? (fetch-timeout %fetch-timeout) prefer-fast-decompression? - (open-connection-for-uri guix:open-connection-for-uri)) + (open-connection-for-uri guix:open-connection-for-uri) + (keep-alive? #f)) "Download the nar prescribed in NARINFO, which is assumed to be authentic and authorized, and write it to DESTINATION. When DEDUPLICATE? is true, and if DESTINATION is in the store, deduplicate its files." @@ -505,7 +506,7 @@ if DESTINATION is in the store, deduplicate its files." (raise c)))) (http-fetch uri #:text? #f #:port port - #:keep-alive? #t + #:keep-alive? keep-alive? #:buffered? #f))))) (else (raise @@ -586,6 +587,12 @@ if DESTINATION is in the store, deduplicate its files." ;; Wait for the reporter to finish. (every (compose zero? cdr waitpid) pids) + ;; TODO The port should also be closed if the relevant HTTP response + ;; header is set, but http-fetch doesn't currently share that + ;; information + (unless keep-alive? + (close-port raw)) + (values expected (get-hash))))) -- cgit v1.2.3