From 61ef22f432933a51dfe9e286488689abb84c1b92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Sat, 27 Apr 2013 23:00:21 +0200
Subject: [PATCH] web: Add 2.0.5 workaround for responses without
 content-length.

* guix/web.scm (read-response-body*)[when-guile<=2.0.5]: Support
  responses without content-length.
  Reported by Andreas Enge <andreas@enge.fr>.
---
 guix/web.scm | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/guix/web.scm b/guix/web.scm
index 3348d42b47..0fa3f8aa0c 100644
--- a/guix/web.scm
+++ b/guix/web.scm
@@ -121,12 +121,15 @@ closed it will also close PORT, unless the KEEP-ALIVE? is true."
                                                   #:keep-alive? #t)))
          (get-bytevector-all chunk-port))
        (let ((nbytes (response-content-length r)))
-         (and nbytes
-              (let ((bv (get-bytevector-n (response-port r) nbytes)))
-                (if (= (bytevector-length bv) nbytes)
-                    bv
-                    (bad-response "EOF while reading response body: ~a bytes of ~a"
-                                  (bytevector-length bv) nbytes)))))))
+         ;; Backport of Guile commit 84dfde82ae8f6ec247c1c147c1e2ae50b207bad9
+         ;; ("fix response-body-port for responses without content-length").
+         (if nbytes
+             (let ((bv (get-bytevector-n (response-port r) nbytes)))
+               (if (= (bytevector-length bv) nbytes)
+                   bv
+                   (bad-response "EOF while reading response body: ~a bytes of ~a"
+                                 (bytevector-length bv) nbytes)))
+             (get-bytevector-all (response-port r))))))
 
  ;; Install this patch only on Guile 2.0.5.
  (when (version>? "2.0.6" (version))