W3C home > Mailing lists > Public > ietf-http-wg-old@w3.org > September to December 1997

Re: Another Question on byte ranges

From: Jeffrey Mogul <mogul@pa.dec.com>
Date: Tue, 04 Nov 97 12:59:49 PST
Message-Id: <9711042059.AA07655@acetes.pa.dec.com>
To: http working group <http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com>
John Franks writes:

    From section 14.17
            A server sending a response with status code 416 (Requested
            range  not valid) SHOULD include a Content-range field with
            a content-range-spec of "*".

    What is the purpos of this?

    BUT 10.4.17 says about status 416:

            When this status code is returned for a byte-range request,
            the response MUST include a Content-Range entity-header
            field specifying the current length of the selected resource
            (see section 14.17).

    I don't think '*' specifies the length. On the other hand I see no
    way to make a Content-Range header which would be legal and would 
    specify the length.
    
What happened here is that I drafted the revised language and BNF too
quickly, and screwed up.

    Maybe what is needed is to allow something like 
    
       Content-Range: bytes *-*/200
    
    when an illegal range (like 300-400) has been requested from a 200
    byte file.
    
In fact, what we had intended to specify was something very much
like that, except that we meant to have:

       Content-Range: bytes */200

So, here's another stab at this - hopefully, correct this time.
(But, unlike the last time, maybe someone should else review what
I wrote?)

(1) The BNF in 14.17 should be:

	   Content-Range = "Content-Range" ":" content-range-spec

	    content-range-spec      = byte-content-range-spec

	    byte-content-range-spec = bytes-unit SP
	    			      byte-range-resp-spec "/"
				      ( entity-length | "*" )

	    byte-range-resp-spec = (first-byte-pos "-" last-byte-pos)
				      | "*"

	    entity-length           = 1*DIGIT

(2) The following four paragraphs should read:

	The asterisk "*" character in an entity-length means that the
	entity-length is unknown at the time when the response was
	generated.

	Unlike byte-ranges-specifier values, a byte--range-resp-spec
	may only specify one range, and must contain absolute byte
	positions for both the first and last byte of the range.

	A byte-content-range-spec with a byte-range-resp-spec whose
	last-byte-pos value is less than its first-byte-pos value, or
	whose entity-length value is less than or equal to its
	last-byte-pos value, is invalid. The recipient of an invalid
	byte-content-range-spec MUST ignore it and any content
	transferred along with it.

	A server sending a response with status code 416 (Requested
	range not valid) SHOULD include a Content-range field with
	a byte-range-resp-spec of "*".  The entity-length specifies
	the current length of the selected resource.  A response
	with status code 206 (Partial Content) MUST NOT include a
	Content-range field with a byte-range-resp-spec of "*".

-Jeff
Received on Tuesday, 4 November 1997 13:08:53 EST

This archive was generated by hypermail pre-2.1.9 : Wednesday, 24 September 2003 06:33:02 EDT