Subject: DAV: header values

From: Greg Stein <[email-masked]>
Date: Sat, 8 Apr 2000 05:01:29 -0700 (PDT)

Hi all,

In section 9.1 of RFC 2518, the spec states that 1#extend should be used
for adding tokens. Two problems:

1) the RFC doesn't have a "*" to indicate any number of extensions
2) "extend" is never specified. Specifically, what is the set of valid
   characters?

I plan to have some mod_dav-specific properties, and I'd like to note
their existence in the DAV: field. The identifier could also be used by
clients to detect the mod_dav version to work around problems or whatever.
Anyhow... I want to return something like:

DAV: 1,2,<http://apache.org/dav/1.0>

Does anybody have an issue with defining "extend" to contain at least the
characters which are valid in a Coded-URL?

thx,
-g

-- 
Greg Stein, http://www.lyra.org/

---

From: Juergen Reuter <[email-masked]>
Date: Sat, 08 Apr 2000 18:46:28 +0200

> 1) the RFC doesn't have a "*" to indicate any number of extensions

The "1#element" rule in RFC 2068, section 2.1 indicates a list of at
least 1 element, separated by one or more commas and with optional
linear white space.

> 2) "extend" is never specified. Specifically, what is the set of valid

See issue EXTEND_UNDEFINED on the WebDAV issues list at
http://www.ics.uci.edu/pub/ietf/webdav/protocol/issues.html
(BTW., Greg, I could not find any hyper link on www.webdav.org that
points to this page.)

Jim Whitehead proposed to define:
> extend = token       ; token is defined in [HTTP].
(see
http://lists.w3.org/Archives/Public/w3c-dist-auth/1999OctDec/0199.html).

> characters which are valid in a Coded-URL?

Section 2.2 of RFC 2068 defines:
       token          = 1*<any CHAR except CTLs or tspecials>

          tspecials      = "(" | ")" | "<" | ">" | "@"
                         | "," | ";" | ":" | "\" | <">
                         | "/" | "[" | "]" | "?" | "="
                         | "{" | "}" | SP | HT

Hence, the above would be illegal, as it contains "<", ">", ":" and "/".
But one could propose to define (as I already did):

extend = token | quoted-string      ; token and quoted-string are
                                      defined in [HTTP].

That would allow to put a URL into double-quotes.

Bye,
     Juergen

---

From: Greg Stein <[email-masked]>
Date: Mon, 10 Apr 2000 04:33:15 -0700 (PDT)

> least 1 element, separated by one or more commas and with optional

Oh, right.  *forehead slap*  Silly me :-)

> (BTW., Greg, I could not find any hyper link on www.webdav.org that

I've added this to the specs page. Thx for the idea!

And yes. I see that you found the problem already :-)

>... [ defn of token ] ...

> That would allow to put a URL into double-quotes.

Hrm. I don't like that idea. I'd much rather see it be a URI explicitly. A
quoted string doesn't help to prevent conflicts since you could simply
place anything in there (same with tokens). And if servers are to use that
field to express their own capabilities, then we should have a way to
prevent conflicts.

Specifically, I recommend:

   extend = absoluteURI

Further, each of the WebDAV extension specs should alter their use of the
DAV: header to use URIs for their items. For example: DAV:bindings or
DAV:redirectrefs.

Using "extend = Coded-URL" would also be fine, if people think the
brackets are needed. (although it doesn't have to be a URL...)

Cheers,
-g

---

From: Juergen Reuter <[email-masked]>
Date: Mon, 10 Apr 2000 21:47:44 +0200

> Specifically, I recommend:

Unfortunately, this would make the lexical analysis ambigous, as,
according to RFC 2068, an absoluteURI may contain a ",":

absoluteURI    = scheme ":" *( uchar | reserved )
uchar          = unreserved | escape
unreserved     = ALPHA | DIGIT | safe | extra | national
extra          = "!" | "*" | "'" | "(" | ")" | ","

Hence, when encountering a ",", you do not know if this is part
of the absoluteURI, or if it is used to separate two absoluteURIs
from each other as to the 1#extend rule. :-(

Bye,
     Juergen

---

From: Juergen Reuter <[email-masked]>
Date: Mon, 10 Apr 2000 23:23:36 +0200

P.S.:

However, the rule

   extend = Coded-URL

should be fine, because the rule

   Coded-URL = "<" absoluteURI ">"

implies that, as soon as you have encountered a "<", you can
accept as many "," as you find, belonging all to the absoluteURI,
until you finally reach a ">". (I suppose that is the reason why
people think that the brackets are needed. :-))

Bye,
     Juergen

---

From: Greg Stein <[email-masked]>
Date: Mon, 10 Apr 2000 14:36:50 -0700 (PDT)

> people think that the brackets are needed. :-))

Exactly!

All righty then... I'll resubmit my proposal:

   extend = "<" absoluteURI ">"

For semantic purposes, I expanded Coded-URL since we will certainly have
URI values in there (e.g. DAV:bindings) rather than URLs. In an If:
header, the "URL" term makes sense.

Back to my original point, then: does anybody see a problem if I updated
mod_dav to use the following DAV: header:

  DAV: 1,2,<http://apache.org/dav/0.9.16>

??

Cheers,
-g