Comment 22 for bug 198646

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

Well to start with, it only seems to affect multipart requests. Which isn't very surprising since there is no "boundary" for single-part requests.

If I'm reading the log correctly, though, I don't understand why we are failing. Specifically, it looks like Savannah is returning:
< Connection: Keep-Alive
< Content-Type: multipart/byteranges; boundary=":gn1T,l__lXvUYr73ia-"
< Date: Thu, 31 Jul 2008 16:12:17 GMT
< Server: Apache/2.2.3 (Debian) DAV/2
< Last-Modified: Thu, 26 Jun 2008 22:04:56 GMT
< ETag: "1c9c203-9e5b0-fbc3b200"
< Accept-Ranges: bytes
< Content-Type: application/plain
< Via: 1.0 hinet-C233.8

Which is perfectly clear about what the boundary should be. I wonder if it is because Savannah is returning 2 Content-type: strings, which is confusing pycurl.

Specifically, I'm guessing that pycurl is just appending the second value onto the first value, and then getting:

content_type = 'multipart/byteranges; boundary=";gn1...." application/plain'

And then it fails to parse the boundary="" portion. (It doesn't find the quotes to remove because of the trailing information.)

Could you try doing the same fetch without pycurl? Specifically try:

bzr pull http+urllib://original/path

We have 2-http implementations, and it is possible that urllib handles this better.

That said, is it legal to give 2 ContentType values? (Certainly urllib might break under this condition as well, but at least we could try it.)