From 270246defe541778ceaea1a87b5812c01799eaea Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 12 Nov 2012 23:09:32 +0100 Subject: download: Follow HTTP redirections. * guix/build/download.scm (http-fetch): Follow the redirection when CODE is 302. --- guix/build/download.scm | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'guix') diff --git a/guix/build/download.scm b/guix/build/download.scm index f3487ce9a0..7043c1b398 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -101,14 +101,22 @@ which is not available during bootstrap." (http-get uri #:port connection #:decode-body? #f)) ((code) (response-code resp))) - (if (= 200 code) - (begin - (call-with-output-file file - (lambda (p) - (put-bytevector p bv))) - file) - (error "download failed" (uri->string uri) - code (response-reason-phrase resp))))) + (case code + ((200) ; OK + (begin + (call-with-output-file file + (lambda (p) + (put-bytevector p bv))) + file)) + ((302) ; found (redirection) + (let ((uri (response-location resp))) + (format #t "following redirection to `~a'...~%" + (uri->string uri)) + (close connection) + (http-fetch uri file))) + (else + (error "download failed" (uri->string uri) + code (response-reason-phrase resp)))))) (define-syntax-rule (false-if-exception* body ...) -- cgit v1.2.3