summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2024-04-18 17:25:33 +0100
committerChristopher Baines <mail@cbaines.net>2026-01-28 17:44:57 +0000
commitbe84a75c39c697d5561a246a0a9a1dde7bb5bb8f (patch)
treea0e3951dd664b533926d83e42b2d6f968221967b
parent53d306ca3934ede0b6e1780cfa5fea7d2efe900d (diff)
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
-rwxr-xr-xguix/scripts/substitute.scm6
-rw-r--r--guix/substitutes.scm11
2 files changed, 13 insertions, 4 deletions
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 2634161e725..b3a514815db 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -408,7 +408,8 @@ way to download the nar."
#:fast-decompression?
fast-decompression?
#:open-connection-for-uri
- open-connection-for-uri/cached))
+ open-connection-for-uri/cached
+ #:keep-alive? #t))
(loop rest)))
(()
(loop rest)))))))
@@ -461,7 +462,8 @@ PORT."
#:print-build-trace? print-build-trace?
#:fast-decompression? 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 79c109e1242..e1c67497572 100644
--- a/guix/substitutes.scm
+++ b/guix/substitutes.scm
@@ -467,7 +467,8 @@ again. If DURATION is #f, run BODY with no timeout."
#:key deduplicate? print-build-trace?
(fetch-timeout %fetch-timeout)
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. Use
@@ -513,7 +514,7 @@ OPEN-CONNECTION-FOR-URI to open connections."
response
(http-fetch uri #:text? #f
#:port port
- #:keep-alive? #t
+ #:keep-alive? keep-alive?
#:buffered? #f)))
(values port
(response-content-length response)))))))
@@ -596,6 +597,12 @@ OPEN-CONNECTION-FOR-URI to open connections."
;; 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)))))