diff options
author | Ludovic Courtès <ludo@gnu.org> | 2012-11-09 00:19:20 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2012-11-09 00:19:20 +0100 |
commit | e722af7522bd4e7625b876f6c7a3525e89d96e7c (patch) | |
tree | 2c3b9fb8193b9a0bc99cae42bb33937e0421eb31 | |
parent | 7bdd1f0e3c99c64315c1a502b136fac0b78e716d (diff) | |
download | guix-e722af7522bd4e7625b876f6c7a3525e89d96e7c.tar guix-e722af7522bd4e7625b876f6c7a3525e89d96e7c.tar.gz |
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.scm | 19 |
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))))) |