issue 85 - range unit extensions

Issue 85 <http://tools.ietf.org/wg/httpbis/trac/ticket/85> asks us to  
clarify what content-range unit extensions (i.e., things other than  
"bytes") are, or get rid of them.

Julian has pointed out that there's at least one other one existent  
today (although not formally specified); see <http://msdn.microsoft.com/en-us/magazine/cc301869.aspx 
 >.

I think the right thing to do here is to document how they're to be  
extended (most likely in section 3 of p5).

Straw-man proposal (not exact text):

Range-unit extensions SHOULD NOT be specific to any format. This is  
because caches are allowed to combine ranges from multiple responses,  
and to serve range requests out of cache; format-specific range units  
make it less likely that implementations will be able to do this  
(although there may be exceptions, hence the SHOULD NOT). An  
informational reference to p6 to highlight this to potential extenders  
would be a good idea.

We'll also need to determine what the requirements for registration  
are (standards-track?), and set up the registry.

Furthermore, Section 6.2 - the BNF says:

> 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 "/"
>                           ( instance-length | "*" )
>
> byte-range-resp-spec = (first-byte-pos "-" last-byte-pos)
>                                | "*"
> instance-length           = 1*DIGIT

This does not allow other range units to be used. If we keep them,  
this BNF needs to be changed to something like:

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

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

byte-range-resp-spec = (first-byte-pos "-" last-byte-pos)
                                | "*"
instance-length           = 1*DIGIT
ext-content-range-spec = other-range-unit SP CHAR*

Note that section 6.2 places several requirements on the use of the  
Content-Range header which assume that byte-ranges are in use; we'd  
need to adjust the language appropriately.

Beyond that, I can't see what else we'd need to specify; everything  
else is unit-specific.


Thoughts?

--
Mark Nottingham     http://www.mnot.net/

Received on Monday, 28 July 2008 12:59:48 UTC