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:
(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.)
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: bazaar- vcs.org/ bzr/.bzr/ repository/ packs/bf8c313b5 51d33e58f99ae1d 130c3aa0. pack 41,4084836- 6202195, 6204756- 9312268, 9356994- 21260316
14.969 > GET http://
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-
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/bf8c313b5 51d33e58f99ae1d 130c3aa0. pack 6202195, 6204756- 9312268, 9356994- 21260316
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-
(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.)