Subject: RE: Trailing "/" in BIND Requests

From: "Yaron Goland (Exchange)" <[email-masked]>
Date: Wed, 15 Sep 1999 16:49:58 -0700

The inability to bind "/" simply means that your model is broken. There is
nothing exceptionally special about the "/" resource name other than it
doesn't have a parent. It must be just as bindable as any other resource
name.

> -----Original Message-----
> From: Slein, Judith A [mailto:[email-masked]]
> Sent: Wed, September 15, 1999 11:53 AM
> To: 'WebDAV'
> Subject: Trailing "/" in BIND Requests
> 
> 
> Both Yaron and Jim Amsden our attempts to enforce consistency 
> between the
> Request-URI and the Destination header in BIND requests are 
> not appropriate.
> We wanted to say that either both must end in a "/" or 
> neither may end in a
> "/".  
> 
> But in reality a trailing "/" is not a reliable indicator of 
> the type of
> resource being addressed, so we should allow servers to process BIND
> requests even if the Request-URI ends in "/" and the 
> Destination header does
> not, or vice versa.
> 
> We agree with these comments and will remove the constraints from the
> description of the BIND method and the related examples.
> 
> Yaron also objected to our saying that the Request-URI cannot 
> just consist
> of "/".  That is, we currently say that you cannot use BIND 
> to create a
> binding between the root and some resource.  We say this 
> because we define a
> binding to be a relation between a URI segment in its parent 
> collection and
> some resource.  That is, it's the triple (segment, 
> collection, resource).
> Here there is no segment, and there is no parent collection.  
> So you can't
> make sense of creating a binding for "/". 
> 
> --Judy
> 
> Judith A. Slein
> Xerox Corporation
> [email-masked]
> (716)422-5169
> 800 Phillips Road 105/50C
> Webster, NY 14580
>

---

From: "Geoffrey M. Clemm" <[email-masked]>
Date: Thu, 16 Sep 1999 10:20:56 -0400

From: "Yaron Goland (Exchange)" <[email-masked]>

The BIND operation is the way of linking a resource by name into a
collection resource (i.e. giving it another parent).  If a BIND were allowed
to succeed on "/", it would result in "/" having a parent, which would
violate the very thing that you identified as being special about "/",
namely that it has no parent.

Another way to see why this is so, is to observe that BIND is
really is a 3 argument operation:

BIND(source-resource-URL, destination-collection-URL, binding-name).

For convenience, we have encoded it as:

BIND source-resource-URL
Destination: destination-collection-URL/binding-name

This is unambiguous, since you strip off a trailing slash (if any)
from the Destination URL, use the last segment of the resulting URL to
get the binding-name, and the remainder of the Destination URL is the
destination-collection-URL.  This works for every URL except for
"/", since stripping off the trailing slash will leave you with the
empty string from which you can get neither a legal binding-name
nor a legal destination-collection-URL.

Judy: We might want some form of this preceding paragraph to the spec
to make sure servers parse the Destination header of the BIND properly.

Cheers,
Geoff