If header list syntax, Re: Test cases for "If" header checks

Hi,

I think there's an issue with the new If header syntax defined in 
RFC2518bis 
(<http://greenbytes.de/tech/webdav/draft-ietf-webdav-rfc2518bis-07.html#rfc.section.9.5>), 
allowing comma separation and consequently multiple instances of "If" 
headers.

In section 4.2, RFC2616 says 
(<http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.4.2.p.5>):

"Multiple message-header fields with the same field-name MAY be present 
in a message if and only if the entire field-value for that header field 
is defined as a comma-separated list [i.e., #(values)]."

RFC2518bis currently defines the grammar below:

    If = "If" ":" ( 1*No-tag-list | 1*Tagged-list)
    No-tag-list = List
    Tagged-list = Resource 1*List
    Resource = Coded-URL
    List = #( "(" List | Clause ")" )
    Clause = ["Not"] State-token | State-token
    State-token = Coded-URL  | "[" entity-tag "]"
    Coded-URL = "<" absoluteURI ">"

which clearly is different from what RFC2616 requires.

It may be possible to fix this, but as nobody seems to have implemented 
this yet, we should also think about whether it's really needed:

1) Did we ever *see* an interop problem because of message header 
lengths? Was it ever reported to the mailing list?

2) If there is indeed a problem, is this about the total length of a 
single header, or the length of each individual line? I'm asking because 
it is possible to split a *single* request header across multiple lines 
already.


Looking at 
<http://greenbytes.de/tech/webdav/draft-ietf-webdav-rfc2518bis-07.html#rfc.section.9.5.2>:

If: <http://www.example.com/resource1> (<locktoken:a-write-lock-token>
      [W/"A weak ETag"]), (["strong ETag"]),
      <http://www.bar.bar/random>(["another strong ETag"])

I think what we want is that this is the same thing as:

If: <http://www.example.com/resource1> (<locktoken:a-write-lock-token>
      [W/"A weak ETag"])
If: (["strong ETag"])
If: <http://www.bar.bar/random>(["another strong ETag"])

Which could also be written as:

If: <http://www.example.com/resource1> (<locktoken:a-write-lock-token>
      [W/"A weak ETag"])
     (["strong ETag"])
     <http://www.bar.bar/random>(["another strong ETag"])

today.

Feedback appreciated, Julian

Received on Sunday, 23 October 2005 12:43:31 UTC