Subject: bug#13095: http-get: Throw to key `bad-response' with args `("EOF while reading response body: ...)'

From: [email-masked] (Ludovic Courtès)
Date: Sun, 09 Dec 2012 00:39:11 +0100

Thien-Thi Nguyen <[email-masked]> skribis:

> HTTP 1.0 is "close by default", but HTTP 1.1 is "keep open by default",
> if i recall correctly.  Does that have anything to do w/ this bug?

Note sure, because both http://citylan.dl.sourceforge.net (the example
that fails) and http://ftp.gnu.org (one that works even with the
‘shutdown’ call) are HTTP 1.1:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (use-modules (web client)(web uri)(rnrs io ports))
scheme@(guile-user)> (define resp (http-get (string->uri "http://citylan.dl.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2")))
scheme@(guile-user)> resp
$1 = #<<response> version: (1 . 1) code: 200 reason-phrase: "OK" headers: ((server . "nginx/1.0.12") (date . #<date nanosecond: 0 second: 25 minute: 35 hour: 23 day: 8 month: 12 year: 2012 zone-offset: 0>) (content-type application/octet-stream) (content-length . 421971) (last-modified . #<date nanosecond: 0 second: 58 minute: 47 hour: 6 day: 20 month: 4 year: 2012 zone-offset: 0>) (connection close) (accept-ranges bytes)) port: #<closed: file 0>>
scheme@(guile-user)> (define resp* (http-get (string->uri "http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz")))
scheme@(guile-user)> resp*
$2 = #<<response> version: (1 . 1) code: 200 reason-phrase: "OK" headers: ((date . #<date nanosecond: 0 second: 59 minute: 35 hour: 23 day: 8 month: 12 year: 2012 zone-offset: 0>) (server . "Apache/2.2.14 (Trisquel GNU/Linux)") (last-modified . #<date nanosecond: 0 second: 47 minute: 55 hour: 17 day: 20 month: 4 year: 2012 zone-offset: 0>) (etag "4648b4-aa48b-4be1fff866200" . #t) (accept-ranges bytes) (content-length . 697483) (connection close) (content-type application/x-gzip)) port: #<closed: file 0>>
--8<---------------cut here---------------end--------------->8---

Thanks,
Ludo’.