aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-03-14 17:35:09 +0100
committerLudovic Courtès <ludo@gnu.org>2016-03-14 23:34:33 +0100
commitd262a0f36baa5276076fcd160da7cf7661876eca (patch)
tree15e85d60807281c0981e73a0e228cae42aac1968
parentcc27dbcf4af86bb073f1184e6186b2db96a479aa (diff)
downloadpatches-d262a0f36baa5276076fcd160da7cf7661876eca.tar
patches-d262a0f36baa5276076fcd160da7cf7661876eca.tar.gz
http-client: Add #:keep-alive? parameter.
* guix/http-client.scm (http-fetch): Add #:keep-alive? parameter and pass it to 'http-get' or 'http-get*'.
-rw-r--r--guix/http-client.scm9
1 files changed, 7 insertions, 2 deletions
diff --git a/guix/http-client.scm b/guix/http-client.scm
index 2161856c63..25693824ed 100644
--- a/guix/http-client.scm
+++ b/guix/http-client.scm
@@ -222,11 +222,14 @@ or if EOF is reached."
(module-define! (resolve-module '(web client))
'shutdown (const #f))
-(define* (http-fetch uri #:key port (text? #f) (buffered? #t))
+(define* (http-fetch uri #:key port (text? #f) (buffered? #t)
+ keep-alive?)
"Return an input port containing the data at URI, and the expected number of
bytes available or #f. If TEXT? is true, the data at URI is considered to be
textual. Follow any HTTP redirection. When BUFFERED? is #f, return an
-unbuffered port, suitable for use in `filtered-port'.
+unbuffered port, suitable for use in `filtered-port'. When KEEP-ALIVE? is
+true, send a 'Connection: keep-alive' HTTP header, in which case PORT may be
+reused for future HTTP requests.
Raise an '&http-get-error' condition if downloading fails."
(let loop ((uri (if (string? uri)
@@ -246,8 +249,10 @@ Raise an '&http-get-error' condition if downloading fails."
;; Try hard to use the API du jour to get an input port.
(if (guile-version>? "2.0.7")
(http-get uri #:streaming? #t #:port port
+ #:keep-alive? #t
#:headers auth-header) ; 2.0.9+
(http-get* uri #:decode-body? text? ; 2.0.7
+ #:keep-alive? #t
#:port port #:headers auth-header)))
((code)
(response-code resp)))