Comment 3 for bug 198646

Revision history for this message
John A Meinel (jameinel) wrote :

It seems this is happening because of how we are reading pack files. We generally make partial requests for the file, which works fine. However, we also tack on a partial request at the beginning of the file to make sure that the target file has the right header, and that seems to "abuse" proxies.

To give a concrete example, this request hangs for 15min and then dies with the boundary failure:
14.969 > GET http://bazaar-vcs.org/bzr/.bzr/repository/packs/bf8c313b551d33e58f99ae1d130c3aa0.pack
14.969 > Connection: Keep-Alive
> Accept: */*
> User-agent: bzr/1.2.0.dev.0 (urllib)
> Host: bazaar-vcs.org
> Pragma: no-cache
> Cache-control: max-age=0
> Range: bytes=0-41,4084836-6202195,6204756-9312268,9356994-21260316

If I split the requests so that the first range in any readv is sent as a separate request, then this succeeds:

17.372 > GET http://bazaar-vcs.org/bzr/.bzr/repository/packs/bf8c313b551d33e58f99ae1d130c3aa0.pack
17.372 > Connection: Keep-Alive
> Accept: */*
> User-agent: bzr/1.2.0.dev.0 (urllib)
> Host: bazaar-vcs.org
> Pragma: no-cache
> Cache-control: max-age=0
> Range: bytes=4084836-6202195,6204756-9312268,9356994-21260316

(Note that a lot of the other requests that are 0-41, XXXX are succeeding, it seems that it requires reaching a certain level of complexity/bytes/something before this gets triggered.)