-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to HTTP1.1 RFC

Section 4.4...

  "If a Content-Length header field (section 14.13) is present, its
     decimal value in OCTETs represents both the entity-length and the
     transfer-length. The Content-Length header field MUST NOT be sent
     if these two lengths are different (i.e., if a Transfer-Encoding

     header field is present). If a message is received with both a
     Transfer-Encoding header field and a Content-Length header field,
     the latter MUST be ignored."

...

   "For compatibility with HTTP/1.0 applications, HTTP/1.1 requests
   containing a message-body MUST include a valid Content-Length header
   field unless the server is known to be HTTP/1.1 compliant."

Section 14.13...

  "Applications SHOULD use this field to indicate the transfer-length of
   the message-body, unless this is prohibited by the rules in section
   4.4."

I don't know if this helps, but it seems in most cases the Content-Length *should* be there unless Transfer-Encoding header
exists, then it could be ignored or ommitted.


Zach Dennis
Market Technologies Inc.
office: 616-827-9543 xt. 1222
fax: 616-827-9573
cell: 616-318-6739
http://www.mktec.com


James Edward Gray II wrote:
> On Feb 15, 2007, at 1:33 PM, James Edward Gray II wrote:
> 
>> On Feb 15, 2007, at 1:29 PM, Berger, Daniel wrote:
>>
>>>> -----Original Message-----
>>>> From: James Edward Gray II [mailto:james / grayproductions.net]
>>>> Sent: Thursday, February 15, 2007 12:19 PM
>>>> To: Ruby Core
>>>> Subject: Trouble with xmlrpc
>>>>
>>>>
>>>> Some of the Ruby code used by TextMate makes use of xmlrpc/
>>>> client.rb.  We are now getting bug reports from users and have
>>>> tracked the issue back to this bit of code in that file:
>>>>
>>>> http://pastie.textmate.org/39421
>>>>
>>>> This code throws an error if the response does not have a Content-
>>>> Length header, but our understanding is that this header is not
>>>> mandatory.  Could anyone please explain to me why this limitation is
>>>> in place?
>>>
>>> My *guess* is that this:
>>>
>>> elsif expected.to_i != data.size and resp["Transfer-Encoding"].nil?
>>>
>>> Should be:
>>>
>>> elsif expected != '<unknown>' and expected.to_i != data.size and
>>> resp["Transfer-Encoding"].nil?
>>
>> That makes a lot more sense to me, since the code goes through the
>> trouble of setting "<unknown>" in the first place.
> 
> Since no one seems to be claiming this is expected behavior, can we
> please fix it?
> 
> Below I will provide a patch against the ruby_1_8 branch.  It should
> also be applied to trunk and I can provide that patch if needed.
> 
> CHANGELOG:
> 
> Making the Content-Length parameter optional for responses in
> xmlrpc/client.rb.
> 
> James Edward Gray II
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFF1c8rMyx0fW1d8G0RAle9AJ9zZFae+7SVE5MLyVUqcHLUjcDrqgCbBzzY
PThL48W6XH01GanDVb0WTKI=
=PR7U
-----END PGP SIGNATURE-----