~ruther/guix-local

d262a0f36baa5276076fcd160da7cf7661876eca — Ludovic Courtès 10 years ago cc27dbc
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*'.
1 files changed, 7 insertions(+), 2 deletions(-)

M guix/http-client.scm
M guix/http-client.scm => guix/http-client.scm +7 -2
@@ 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)))