- From: <Jim_Ravan@avid.com>
- Date: Wed, 16 Dec 1998 12:23:15 -0500
- To: www-lib@w3.org
>Jim_Ravan@avid.com wrote:
>
> I need to do range GETs and PUTs to/from memory. For example, someone
asks
> me to read bytes 300-500 of "http://www.abc.com/xyz.xml" to buffer foo.
> After they modify the buffer, they will then ask me to write the buffer
> back to the XML document. Range requests don't seem to work when added to
a
> request that is then processed by HTLoadAnchorToChunk(). Am I just going
> something wrong?
>Henrik kindly replied:
>
>Have you looked at
>
> http://www.w3.org/Library/Examples/range.c
FYI, I am using libwww 5.2 with CWGUSI on a Macintosh.
Well, I think I understand why ranges didn't work. But if I'm correct, I
can't understand how the example program, range.c, works. HTTPReq.c formats
the HTTP stream for output. In routine HTTPMakeRequest(), the relevant code
reads:
if (request_mask & HT_C_RANGE) { /* Format range requests */ }
But the associated routine to add a range to the request,
HTRequest_addRange() does *not* set the HT_C_RANGE bit in the request mask.
Thus, although a range list exists, HTTPMakeRequest() will not attempt to
format it. I *think* the fix is either to add an explicit set of HT_C_RANGE
in range.c as follows:
/* Set the ranges */
HTRequest_addRange(request, range_unit, HTChunk_data(ranges));
HTRequest_addRqHd(HT_C_RANGE);
or to change HTRequest_addRange() to set HT_C_RANGE.
I added HTRequest_addRqHd(HT_C_RANGE) to my application and range headers
began to appear. I also noted that HTLine.c sets HT_C_RANGE directly.
Should it?
regards
-jim
Received on Wednesday, 16 December 1998 12:31:03 UTC