summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-11-09 00:19:20 +0100
committerLudovic Courtès <ludo@gnu.org>2012-11-09 00:19:20 +0100
commite722af7522bd4e7625b876f6c7a3525e89d96e7c (patch)
tree2c3b9fb8193b9a0bc99cae42bb33937e0421eb31
parent7bdd1f0e3c99c64315c1a502b136fac0b78e716d (diff)
downloadguix-e722af7522bd4e7625b876f6c7a3525e89d96e7c.tar.gz
guix-e722af7522bd4e7625b876f6c7a3525e89d96e7c.tar.xz
http: Check the HTTP response code, and bail if not 200.
* guix/build/http.scm (http-fetch): Check RESP's code; error out when it's not 200.
-rw-r--r--guix/build/http.scm19
1 files changed, 13 insertions, 6 deletions
diff --git a/guix/build/http.scm b/guix/build/http.scm
index a3f9f9a870..a0fc452844 100644
--- a/guix/build/http.scm
+++ b/guix/build/http.scm
@@ -17,8 +17,9 @@
;;; along with Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build http)
- #:use-module (web client)
#:use-module (web uri)
+ #:use-module (web client)
+ #:use-module (web response)
#:use-module (rnrs io ports)
#:use-module (srfi srfi-11)
#:export (http-fetch))
@@ -83,8 +84,14 @@ which is not available during bootstrap."
((connection)
(open-connection-for-uri uri))
((resp bv)
- (http-get uri #:port connection #:decode-body? #f)))
- (call-with-output-file file
- (lambda (p)
- (put-bytevector p bv))))
- file)
+ (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" url
+ code (response-reason-phrase resp)))))