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