draft-ietf-webdav-bind-23.txt   draft-ietf-webdav-bind-24.txt 
Network Working Group G. Clemm Network Working Group G. Clemm
Internet-Draft IBM Internet-Draft IBM
Updates: 4918 (if approved) J. Crawford Updates: 4918 (if approved) J. Crawford
Intended status: Experimental IBM Research Intended status: Experimental IBM Research
Expires: August 29, 2009 J. Reschke, Ed. Expires: November 30, 2009 J. Reschke, Ed.
greenbytes greenbytes
J. Whitehead J. Whitehead
U.C. Santa Cruz U.C. Santa Cruz
February 25, 2009 May 29, 2009
Binding Extensions to Web Distributed Authoring and Versioning (WebDAV) Binding Extensions to Web Distributed Authoring and Versioning (WebDAV)
draft-ietf-webdav-bind-23 draft-ietf-webdav-bind-24
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. This document may contain material provisions of BCP 78 and BCP 79. This document may contain material
from IETF Documents or IETF Contributions published or made publicly from IETF Documents or IETF Contributions published or made publicly
available before November 10, 2008. The person(s) controlling the available before November 10, 2008. The person(s) controlling the
copyright in some of this material may not have granted the IETF copyright in some of this material may not have granted the IETF
Trust the right to allow modifications of such material outside the Trust the right to allow modifications of such material outside the
IETF Standards Process. Without obtaining an adequate license from IETF Standards Process. Without obtaining an adequate license from
skipping to change at page 1, line 47 skipping to change at page 1, line 47
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 29, 2009. This Internet-Draft will expire on November 30, 2009.
Copyright Notice Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents in effect on the date of Provisions Relating to IETF Documents in effect on the date of
publication of this document (http://trustee.ietf.org/license-info). publication of this document (http://trustee.ietf.org/license-info).
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. and restrictions with respect to this document.
Abstract Abstract
This specification defines bindings, and the BIND method for creating This specification defines bindings, and the BIND method for creating
multiple bindings to the same resource. Creating a new binding to a multiple bindings to the same resource. Creating a new binding to a
resource causes at least one new URI to be mapped to that resource. resource causes at least one new URI to be mapped to that resource.
Servers are required to insure the integrity of any bindings that Servers are required to ensure the integrity of any bindings that
they allow to be created. they allow to be created.
Editorial Note (To be removed by RFC Editor before publication) Editorial Note (To be removed by RFC Editor before publication)
Please send comments to the Distributed Authoring and Versioning Please send comments to the Distributed Authoring and Versioning
(WebDAV) working group at <mailto:w3c-dist-auth@w3.org>, which may be (WebDAV) working group at <mailto:w3c-dist-auth@w3.org>, which may be
joined by sending a message with subject "subscribe" to joined by sending a message with subject "subscribe" to
<mailto:w3c-dist-auth-request@w3.org>. Discussions of the WEBDAV <mailto:w3c-dist-auth-request@w3.org>. Discussions of the WEBDAV
working group are archived at working group are archived at
<http://lists.w3.org/Archives/Public/w3c-dist-auth/>. <http://lists.w3.org/Archives/Public/w3c-dist-auth/>.
<http://www.webdav.org/bind/draft-ietf-webdav-bind-issues.html> lists <http://www.webdav.org/bind/draft-ietf-webdav-bind-issues.html> lists
all registered issues since draft 02. all registered issues since draft 02.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 6 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 6
1.2. Method Preconditions and Postconditions . . . . . . . . . 7 1.2. Method Preconditions and Postconditions . . . . . . . . . 8
2. Overview of Bindings . . . . . . . . . . . . . . . . . . . . . 7 2. Overview of Bindings . . . . . . . . . . . . . . . . . . . . . 8
2.1. Bindings to Collections . . . . . . . . . . . . . . . . . 8 2.1. Bindings to Collections . . . . . . . . . . . . . . . . . 8
2.1.1. Bind Loops . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1. Bind Loops . . . . . . . . . . . . . . . . . . . . . . 9
2.2. URI Mappings Created by a new Binding . . . . . . . . . . 9 2.2. URI Mappings Created by a new Binding . . . . . . . . . . 9
2.3. COPY and Bindings . . . . . . . . . . . . . . . . . . . . 10 2.3. COPY and Bindings . . . . . . . . . . . . . . . . . . . . 10
2.3.1. Example: COPY with 'Depth: infinity' in Presence 2.3.1. Example: COPY with 'Depth: infinity' in Presence
of Bind Loops . . . . . . . . . . . . . . . . . . . . 12 of Bind Loops . . . . . . . . . . . . . . . . . . . . 12
2.3.2. Example: COPY with 'Depth: infinity' with Multiple 2.3.2. Example: COPY updating multiple Bindings . . . . . . . 14
Bindings to a Leaf Resource . . . . . . . . . . . . . 14 2.3.3. Example: COPY with 'Depth: infinity' with Multiple
2.4. DELETE and Bindings . . . . . . . . . . . . . . . . . . . 15 Bindings to a Leaf Resource . . . . . . . . . . . . . 15
2.5. MOVE and Bindings . . . . . . . . . . . . . . . . . . . . 15 2.4. DELETE and Bindings . . . . . . . . . . . . . . . . . . . 16
2.5.1. Example: Simple MOVE . . . . . . . . . . . . . . . . . 16 2.5. MOVE and Bindings . . . . . . . . . . . . . . . . . . . . 16
2.5.2. Example: MOVE Request causing a Bind Loop . . . . . . 16 2.5.1. Example: Simple MOVE . . . . . . . . . . . . . . . . . 17
2.6. PROPFIND and Bindings . . . . . . . . . . . . . . . . . . 18 2.5.2. Example: MOVE Request causing a Bind Loop . . . . . . 17
2.6. PROPFIND and Bindings . . . . . . . . . . . . . . . . . . 19
2.7. Determining Whether Two Bindings Are to the Same 2.7. Determining Whether Two Bindings Are to the Same
Resource . . . . . . . . . . . . . . . . . . . . . . . . . 18 Resource . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.8. Discovering the Bindings to a Resource . . . . . . . . . . 19 2.8. Discovering the Bindings to a Resource . . . . . . . . . . 20
3. Properties . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3. Properties . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1. DAV:resource-id Property . . . . . . . . . . . . . . . . . 19 3.1. DAV:resource-id Property . . . . . . . . . . . . . . . . . 20
3.2. DAV:parent-set Property . . . . . . . . . . . . . . . . . 20 3.2. DAV:parent-set Property . . . . . . . . . . . . . . . . . 21
3.2.1. Example for DAV:parent-set Property . . . . . . . . . 20 3.2.1. Example for DAV:parent-set Property . . . . . . . . . 21
4. BIND Method . . . . . . . . . . . . . . . . . . . . . . . . . 21 4. BIND Method . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1. Example: BIND . . . . . . . . . . . . . . . . . . . . . . 24 4.1. Example: BIND . . . . . . . . . . . . . . . . . . . . . . 25
5. UNBIND Method . . . . . . . . . . . . . . . . . . . . . . . . 24 5. UNBIND Method . . . . . . . . . . . . . . . . . . . . . . . . 25
5.1. Example: UNBIND . . . . . . . . . . . . . . . . . . . . . 26 5.1. Example: UNBIND . . . . . . . . . . . . . . . . . . . . . 27
6. REBIND Method . . . . . . . . . . . . . . . . . . . . . . . . 26 6. REBIND Method . . . . . . . . . . . . . . . . . . . . . . . . 27
6.1. Example: REBIND . . . . . . . . . . . . . . . . . . . . . 28 6.1. Example: REBIND . . . . . . . . . . . . . . . . . . . . . 29
6.2. Example: REBIND in Presence of Locks and Bind Loops . . . 29 6.2. Example: REBIND in Presence of Locks and Bind Loops . . . 30
7. Additional Status Codes . . . . . . . . . . . . . . . . . . . 31 7. Additional Status Codes . . . . . . . . . . . . . . . . . . . 32
7.1. 208 Already Reported . . . . . . . . . . . . . . . . . . . 31 7.1. 208 Already Reported . . . . . . . . . . . . . . . . . . . 32
7.1.1. Example: PROPFIND by Bind-Aware Client . . . . . . . . 32 7.1.1. Example: PROPFIND by Bind-Aware Client . . . . . . . . 33
7.1.2. Example: PROPFIND by Non-Bind-Aware Client . . . . . . 34 7.1.2. Example: PROPFIND by Non-Bind-Aware Client . . . . . . 35
7.2. 506 Loop Detected . . . . . . . . . . . . . . . . . . . . 34 7.2. 506 Loop Detected . . . . . . . . . . . . . . . . . . . . 35
8. Capability Discovery . . . . . . . . . . . . . . . . . . . . . 34 8. Capability Discovery . . . . . . . . . . . . . . . . . . . . . 35
8.1. OPTIONS Method . . . . . . . . . . . . . . . . . . . . . . 34 8.1. OPTIONS Method . . . . . . . . . . . . . . . . . . . . . . 35
8.2. 'DAV' Request Header . . . . . . . . . . . . . . . . . . . 34 8.2. 'DAV' Request Header . . . . . . . . . . . . . . . . . . . 35
9. Relationship to WebDAV Access Control Protocol . . . . . . . . 35 9. Relationship to WebDAV Access Control Protocol . . . . . . . . 36
10. Relationship to Versioning Extensions to WebDAV . . . . . . . 35 10. Relationship to Versioning Extensions to WebDAV . . . . . . . 36
11. Security Considerations . . . . . . . . . . . . . . . . . . . 37 11. Security Considerations . . . . . . . . . . . . . . . . . . . 38
11.1. Privacy Concerns . . . . . . . . . . . . . . . . . . . . . 38 11.1. Privacy Concerns . . . . . . . . . . . . . . . . . . . . . 39
11.2. Bind Loops . . . . . . . . . . . . . . . . . . . . . . . . 38 11.2. Bind Loops . . . . . . . . . . . . . . . . . . . . . . . . 39
11.3. Bindings, and Denial of Service . . . . . . . . . . . . . 38 11.3. Bindings, and Denial of Service . . . . . . . . . . . . . 39
11.4. Private Locations May Be Revealed . . . . . . . . . . . . 38 11.4. Private Locations May Be Revealed . . . . . . . . . . . . 39
11.5. DAV:parent-set and Denial of Service . . . . . . . . . . . 38 11.5. DAV:parent-set and Denial of Service . . . . . . . . . . . 39
12. Internationalization Considerations . . . . . . . . . . . . . 38 12. Internationalization Considerations . . . . . . . . . . . . . 39
13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40
14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 39 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 40
15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 39 15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 40
15.1. Normative References . . . . . . . . . . . . . . . . . . . 39 15.1. Normative References . . . . . . . . . . . . . . . . . . . 40
15.2. Informative References . . . . . . . . . . . . . . . . . . 40 15.2. Informative References . . . . . . . . . . . . . . . . . . 41
Appendix A. Clarification to RFC2518bis' Usage of the term Appendix A. Clarification to RFC2518bis' Usage of the term
'lock root' . . . . . . . . . . . . . . . . . . . . . 40 'lock root' . . . . . . . . . . . . . . . . . . . . . 41
Appendix B. Change Log (to be removed by RFC Editor before Appendix B. Change Log (to be removed by RFC Editor before
publication) . . . . . . . . . . . . . . . . . . . . 41 publication) . . . . . . . . . . . . . . . . . . . . 42
B.1. Since draft-ietf-webdav-bind-02 . . . . . . . . . . . . . 41 B.1. Since draft-ietf-webdav-bind-02 . . . . . . . . . . . . . 42
B.2. Since draft-ietf-webdav-bind-03 . . . . . . . . . . . . . 41 B.2. Since draft-ietf-webdav-bind-03 . . . . . . . . . . . . . 42
B.3. Since draft-ietf-webdav-bind-04 . . . . . . . . . . . . . 41 B.3. Since draft-ietf-webdav-bind-04 . . . . . . . . . . . . . 42
B.4. Since draft-ietf-webdav-bind-05 . . . . . . . . . . . . . 41 B.4. Since draft-ietf-webdav-bind-05 . . . . . . . . . . . . . 42
B.5. Since draft-ietf-webdav-bind-06 . . . . . . . . . . . . . 41 B.5. Since draft-ietf-webdav-bind-06 . . . . . . . . . . . . . 42
B.6. Since draft-ietf-webdav-bind-07 . . . . . . . . . . . . . 41 B.6. Since draft-ietf-webdav-bind-07 . . . . . . . . . . . . . 42
B.7. Since draft-ietf-webdav-bind-08 . . . . . . . . . . . . . 42 B.7. Since draft-ietf-webdav-bind-08 . . . . . . . . . . . . . 43
B.8. Since draft-ietf-webdav-bind-09 . . . . . . . . . . . . . 42 B.8. Since draft-ietf-webdav-bind-09 . . . . . . . . . . . . . 43
B.9. Since draft-ietf-webdav-bind-10 . . . . . . . . . . . . . 42 B.9. Since draft-ietf-webdav-bind-10 . . . . . . . . . . . . . 43
B.10. Since draft-ietf-webdav-bind-11 . . . . . . . . . . . . . 42 B.10. Since draft-ietf-webdav-bind-11 . . . . . . . . . . . . . 43
B.11. Since draft-ietf-webdav-bind-12 . . . . . . . . . . . . . 42 B.11. Since draft-ietf-webdav-bind-12 . . . . . . . . . . . . . 43
B.12. Since draft-ietf-webdav-bind-13 . . . . . . . . . . . . . 43 B.12. Since draft-ietf-webdav-bind-13 . . . . . . . . . . . . . 44
B.13. Since draft-ietf-webdav-bind-14 . . . . . . . . . . . . . 43 B.13. Since draft-ietf-webdav-bind-14 . . . . . . . . . . . . . 44
B.14. Since draft-ietf-webdav-bind-15 . . . . . . . . . . . . . 43 B.14. Since draft-ietf-webdav-bind-15 . . . . . . . . . . . . . 44
B.15. Since draft-ietf-webdav-bind-16 . . . . . . . . . . . . . 43 B.15. Since draft-ietf-webdav-bind-16 . . . . . . . . . . . . . 44
B.16. Since draft-ietf-webdav-bind-17 . . . . . . . . . . . . . 43 B.16. Since draft-ietf-webdav-bind-17 . . . . . . . . . . . . . 44
B.17. Since draft-ietf-webdav-bind-18 . . . . . . . . . . . . . 44 B.17. Since draft-ietf-webdav-bind-18 . . . . . . . . . . . . . 45
B.18. Since draft-ietf-webdav-bind-19 . . . . . . . . . . . . . 44 B.18. Since draft-ietf-webdav-bind-19 . . . . . . . . . . . . . 45
B.19. Since draft-ietf-webdav-bind-20 . . . . . . . . . . . . . 44 B.19. Since draft-ietf-webdav-bind-20 . . . . . . . . . . . . . 45
B.20. Since draft-ietf-webdav-bind-21 . . . . . . . . . . . . . 44 B.20. Since draft-ietf-webdav-bind-21 . . . . . . . . . . . . . 45
B.21. Since draft-ietf-webdav-bind-22 . . . . . . . . . . . . . 44 B.21. Since draft-ietf-webdav-bind-22 . . . . . . . . . . . . . 45
Appendix C. Open issues (to be removed by RFC Editor prior to B.22. Since draft-ietf-webdav-bind-23 . . . . . . . . . . . . . 45
publication) . . . . . . . . . . . . . . . . . . . . 44 Appendix C. Resolved issues (to be removed by RFC Editor
C.1. edit . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 before publication) . . . . . . . . . . . . . . . . . 45
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 C.1. edit . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 47 C.2. def-integrity . . . . . . . . . . . . . . . . . . . . . . 46
C.3. ex-copy-multiple-update . . . . . . . . . . . . . . . . . 46
C.4. ex-copy-graph . . . . . . . . . . . . . . . . . . . . . . 46
C.5. ex-live-property . . . . . . . . . . . . . . . . . . . . . 47
C.6. clarify-alternate-uri . . . . . . . . . . . . . . . . . . 47
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 49
1. Introduction 1. Introduction
This specification extends the WebDAV Distributed Authoring Protocol This specification extends the WebDAV Distributed Authoring Protocol
([RFC4918]) to enable clients to create new access paths to existing ([RFC4918]) to enable clients to create new access paths to existing
resources. This capability is useful for several reasons: resources. This capability is useful for several reasons:
URIs of WebDAV-compliant resources are hierarchical and correspond to URIs of WebDAV-compliant resources are hierarchical and correspond to
a hierarchy of collections in resource space. The WebDAV Distributed a hierarchy of collections in resource space. The WebDAV Distributed
Authoring Protocol makes it possible to organize these resources into Authoring Protocol makes it possible to organize these resources into
skipping to change at page 7, line 35 skipping to change at page 7, line 38
A resource that contains, as part of its state, a set of bindings A resource that contains, as part of its state, a set of bindings
that identify internal member resources. that identify internal member resources.
Internal Member URI Internal Member URI
The URI that identifies an internal member of a collection, and The URI that identifies an internal member of a collection, and
that consists of the URI for the collection, followed by a slash that consists of the URI for the collection, followed by a slash
character ('/'), followed by the path segment of the binding for character ('/'), followed by the path segment of the binding for
that internal member. that internal member.
Binding Integrity
The property of a binding that says that:
* the binding continues to exist, and
* the identity of the resource identified by that binding does
not change
unless an explicit request is executed that is defined to delete
that binding (examples of requests that delete a binding are
DELETE, MOVE, and - defined later on - UNBIND, and REBIND).
1.2. Method Preconditions and Postconditions 1.2. Method Preconditions and Postconditions
See Section 16 of [RFC4918] for the definitions of "precondition" and See Section 16 of [RFC4918] for the definitions of "precondition" and
"postcondition". "postcondition".
2. Overview of Bindings 2. Overview of Bindings
Bindings are part of the state of a collection. They define the Bindings are part of the state of a collection. They define the
internal members of the collection, and the names of those internal internal members of the collection, and the names of those internal
members. members.
skipping to change at page 11, line 38 skipping to change at page 11, line 38
If a COPY request causes an existing resource to be updated, the If a COPY request causes an existing resource to be updated, the
bindings to that resource MUST be unaffected by the COPY request. bindings to that resource MUST be unaffected by the COPY request.
Using the preceding example, suppose that a COPY request is issued to Using the preceding example, suppose that a COPY request is issued to
URI-X for resource R', with the Destination header set to URI-2. The URI-X for resource R', with the Destination header set to URI-2. The
content and dead properties of resource R would be updated to be a content and dead properties of resource R would be updated to be a
copy of those of resource R', but the mappings from URI-1, URI-2, and copy of those of resource R', but the mappings from URI-1, URI-2, and
URI-3 to resource R remain unaffected. If because of multiple URI-3 to resource R remain unaffected. If because of multiple
bindings to a resource, more than one source resource updates a bindings to a resource, more than one source resource updates a
single destination resource, the order of the updates is server single destination resource, the order of the updates is server
defined. defined (see Section 2.3.2 for an example).
If a COPY request would cause a new resource to be created as a copy If a COPY request would cause a new resource to be created as a copy
of an existing resource, and that COPY request has already created a of an existing resource, and that COPY request has already created a
copy of that existing resource, the COPY request instead creates copy of that existing resource, the COPY request instead creates
another binding to the previous copy, instead of creating a new another binding to the previous copy, instead of creating a new
resource. resource (see Section 2.3.3 for an example).
2.3.1. Example: COPY with 'Depth: infinity' in Presence of Bind Loops 2.3.1. Example: COPY with 'Depth: infinity' in Presence of Bind Loops
As an example of how COPY with Depth infinity would work in the As an example of how COPY with Depth infinity would work in the
presence of bindings, consider the following collection: presence of bindings, consider the following collection:
+------------------+ +------------------+
| Root Collection | | Root Collection |
| bindings: | | bindings: |
| CollX | | CollX |
skipping to change at page 14, line 5 skipping to change at page 14, line 5
+-------------+ | bindings: | | +-------------+ | bindings: | |
| y.gif CollZ | | | y.gif CollZ | |
+-----------------+ | +-----------------+ |
| | | | | |
| +-------+ | +-------+
| |
+-------------+ +-------------+
| Resource R4 | | Resource R4 |
+-------------+ +-------------+
2.3.2. Example: COPY with 'Depth: infinity' with Multiple Bindings to a 2.3.2. Example: COPY updating multiple Bindings
Given the following collection hierarchy:
+------------------+
| Root Collection |
| bindings: |
| CollX CollY |
+------------------+
/ \
/ \
/ \
+--------------------------+ +-----------------+
| Collection C1 | | Collection C2 |
| bindings: | | bindings: |
| x.gif y.gif | | x.gif y.gif |
+--------------------------+ +-----------------+
| | | |
| | | |
+-------------+ +-------------+ +-------------+
| Resource R1 | | Resource R2 | | Resource R3 |
+-------------+ +-------------+ +-------------+
A COPY of /CollX with Depth infinity to /CollY will not result in a
changed hierarchy, and Resource R3 will be updated with the content
of either Resource R1 or Resource R2.
2.3.3. Example: COPY with 'Depth: infinity' with Multiple Bindings to a
Leaf Resource Leaf Resource
Given the following collection hierarchy: Given the following collection hierarchy:
+------------------+ +------------------+
| Root Collection | | Root Collection |
| bindings: | | bindings: |
| CollX | | CollX |
+------------------+ +------------------+
| |
skipping to change at page 18, line 35 skipping to change at page 19, line 35
| | | |
| | | |
+-------------------+ +-------------------+
2.6. PROPFIND and Bindings 2.6. PROPFIND and Bindings
Consistent with [RFC4918], the value of a dead property MUST be Consistent with [RFC4918], the value of a dead property MUST be
independent of the number of bindings to its host resource or of the independent of the number of bindings to its host resource or of the
path submitted to PROPFIND. On the other hand, the behaviour for path submitted to PROPFIND. On the other hand, the behaviour for
each live property depends on its individual definition (for example, each live property depends on its individual definition (for example,
see [RFC3744], Section 5, paragraph 2). see [RFC3744], Section 5, paragraph 2 for a case where the value is
independent of path and bindings, and [RFC4918], Section 8.8 for a
discussion about the live properties DAV:getetag and DAV:
getlastmodified, which may behave differently).
2.7. Determining Whether Two Bindings Are to the Same Resource 2.7. Determining Whether Two Bindings Are to the Same Resource
It is useful to have some way of determining whether two bindings are It is useful to have some way of determining whether two bindings are
to the same resource. Two resources might have identical contents to the same resource. Two resources might have identical contents
and properties, but not be the same resource (e.g. an update to one and properties, but not be the same resource (e.g. an update to one
resource does not affect the other resource). resource does not affect the other resource).
The REQUIRED DAV:resource-id property defined in Section 3.1 is a The REQUIRED DAV:resource-id property defined in Section 3.1 is a
resource identifier, which MUST be unique across all resources for resource identifier, which MUST be unique across all resources for
skipping to change at page 19, line 48 skipping to change at page 21, line 4
A DAV:allprop PROPFIND request SHOULD NOT return any of the A DAV:allprop PROPFIND request SHOULD NOT return any of the
properties defined by this document. This allows a binding server to properties defined by this document. This allows a binding server to
perform efficiently when a naive client, which does not understand perform efficiently when a naive client, which does not understand
the cost of asking a server to compute all possible live properties, the cost of asking a server to compute all possible live properties,
issues a DAV:allprop PROPFIND request. issues a DAV:allprop PROPFIND request.
3.1. DAV:resource-id Property 3.1. DAV:resource-id Property
The DAV:resource-id property is a REQUIRED property that enables The DAV:resource-id property is a REQUIRED property that enables
clients to determine whether two bindings are to the same resource. clients to determine whether two bindings are to the same resource.
The value of DAV:resource-id is a URI, and may use any registered URI The value of DAV:resource-id is a URI, and may use any registered URI
scheme that guarantees the uniqueness of the value across all scheme that guarantees the uniqueness of the value across all
resources for all time (e.g. the urn:uuid: URN namespace defined in resources for all time (e.g. the urn:uuid: URN namespace defined in
[RFC4122] or the opaquelocktoken: URI scheme defined in [RFC4918]). [RFC4122] or the opaquelocktoken: URI scheme defined in [RFC4918]).
<!ELEMENT resource-id (href)> <!ELEMENT resource-id (href)>
Note: by definition, the URI specified in the DAV:resource-id
property always is an alternate URI for that resource.
3.2. DAV:parent-set Property 3.2. DAV:parent-set Property
The DAV:parent-set property is an OPTIONAL property that enables The DAV:parent-set property is an OPTIONAL property that enables
clients to discover what collections contain a binding to this clients to discover what collections contain a binding to this
resource (i.e. what collections have that resource as an internal resource (i.e. what collections have that resource as an internal
member). It contains an href/segment pair for each collection that member). It contains an href/segment pair for each collection that
has a binding to the resource. The href identifies the collection, has a binding to the resource. The href identifies the collection,
and the segment identifies the binding name of that resource in that and the segment identifies the binding name of that resource in that
collection. collection.
skipping to change at page 20, line 37 skipping to change at page 21, line 38
<!ELEMENT segment (#PCDATA)> <!ELEMENT segment (#PCDATA)>
<!-- PCDATA value: segment, as defined in Section 3.3 of <!-- PCDATA value: segment, as defined in Section 3.3 of
[RFC3986] --> [RFC3986] -->
3.2.1. Example for DAV:parent-set Property 3.2.1. Example for DAV:parent-set Property
For example, if collection C1 is mapped to both /CollX and /CollY, For example, if collection C1 is mapped to both /CollX and /CollY,
and C1 contains a binding named "x.gif" to a resource R1, then either and C1 contains a binding named "x.gif" to a resource R1, then either
[/CollX, x.gif] or [/CollY, x.gif] can appear in the DAV:parent-set [/CollX, x.gif] or [/CollY, x.gif] can appear in the DAV:parent-set
of R1, but not both. But if C1 also had a binding named "y.gif" to of R1, but not both. But if C1 also had a binding named "y.gif" to
R1, then there would be two entries for C1 in the DAV:binding-set of R1, then there would be two entries for C1 in the DAV:parent-set of
R1 (i.e. both [/CollX, x.gif] and [/CollX, y.gif] or, alternatively, R1 (i.e. both [/CollX, x.gif] and [/CollX, y.gif] or, alternatively,
both [/CollY, x.gif] and [/CollY, y.gif]). both [/CollY, x.gif] and [/CollY, y.gif]).
+-------------------------+ +-------------------------+
| Root Collection | | Root Collection |
| bindings: | | bindings: |
| CollX CollY | | CollX CollY |
+-------------------------+ +-------------------------+
| / | /
| / | /
| / | /
+-----------------+ +-----------------+
| Collection C1 | | Collection C1 |
| bindings: | | bindings: |
| x.gif y.gif | | x.gif y.gif |
+-----------------+ +-----------------+
| | | |
| | | |
| | | |
+--------------+ +-------------+
| Resource R1 | | Resource R1 |
+--------------+ +-------------+
In this case, one possible value for DAV:parent-set property on In this case, one possible value for DAV:parent-set property on
"/CollX/x.gif" would be: "/CollX/x.gif" would be:
<parent-set xmlns="DAV:"> <parent-set xmlns="DAV:">
<parent> <parent>
<href>/CollX</href> <href>/CollX</href>
<segment>x.gif</segment> <segment>x.gif</segment>
</parent> </parent>
<parent> <parent>
skipping to change at page 39, line 21 skipping to change at page 40, line 21
14. Acknowledgements 14. Acknowledgements
This document is the collaborative product of the authors and Tyson This document is the collaborative product of the authors and Tyson
Chihaya, Jim Davis, Chuck Fay and Judith Slein. It has benefited Chihaya, Jim Davis, Chuck Fay and Judith Slein. It has benefited
from thoughtful discussion by Jim Amsden, Peter Carlson, Steve from thoughtful discussion by Jim Amsden, Peter Carlson, Steve
Carter, Ken Coar, Ellis Cohen, Dan Connolly, Bruce Cragun, Cyrus Carter, Ken Coar, Ellis Cohen, Dan Connolly, Bruce Cragun, Cyrus
Daboo, Spencer Dawkins, Mark Day, Werner Donne, Rajiv Dulepet, David Daboo, Spencer Dawkins, Mark Day, Werner Donne, Rajiv Dulepet, David
Durand, Lisa Dusseault, Stefan Eissing, Roy Fielding, Yaron Goland, Durand, Lisa Dusseault, Stefan Eissing, Roy Fielding, Yaron Goland,
Joe Hildebrand, Fred Hitt, Alex Hopmann, James Hunt, Marcus Jager, Joe Hildebrand, Fred Hitt, Alex Hopmann, James Hunt, Marcus Jager,
Chris Kaler, Manoj Kasichainula, Rohit Khare, Brian Korver, Daniel Chris Kaler, Manoj Kasichainula, Rohit Khare, Brian Korver, Daniel
LaLiberte, Steve Martin, Larry Masinter, Jeff McAffer, Surendra LaLiberte, Steve Martin, Larry Masinter, Jeff McAffer, Alexey
Koduru Reddy, Max Rible, Sam Ruby, Bradley Sergeant, Nick Shelness, Melnikov, Surendra Koduru Reddy, Max Rible, Sam Ruby, Bradley
John Stracke, John Tigue, John Turner, Kevin Wiggen, and other Sergeant, Nick Shelness, John Stracke, John Tigue, John Turner, Kevin
members of the WebDAV working group. Wiggen, and other members of the WebDAV working group.
15. References 15. References
15.1. Normative References 15.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
skipping to change at page 44, line 35 skipping to change at page 45, line 35
Add correct content length values to examples (no change bars). Add correct content length values to examples (no change bars).
B.21. Since draft-ietf-webdav-bind-22 B.21. Since draft-ietf-webdav-bind-22
Set "Intended Status" to "Experimental". Set "Intended Status" to "Experimental".
Update XML reference to "Extensible Markup Language (XML) 1.0 (Fifth Update XML reference to "Extensible Markup Language (XML) 1.0 (Fifth
Edition)". Edition)".
Appendix C. Open issues (to be removed by RFC Editor prior to B.22. Since draft-ietf-webdav-bind-23
Remove surplus white space from one example.
Fix typo: "DAV:binding-set" -> "DAV:parent-set".
Add and resolve issues "clarify-alternate-uri", "def-integrity", "ex-
copy-multiple-update", "ex-copy-graph", and "ex-live-property".
Appendix C. Resolved issues (to be removed by RFC Editor before
publication) publication)
Issues that were either rejected or resolved in this version of this
document.
C.1. edit C.1. edit
Type: edit Type: edit
julian.reschke@greenbytes.de (2004-05-30): Umbrella issue for julian.reschke@greenbytes.de (2004-05-30): Umbrella issue for
editorial fixes/enhancements. editorial fixes/enhancements.
C.2. def-integrity
In Section 1:
Type: change
alexey.melnikov@isode.com (2009-05-15): Define the term "integrity".
Resolution (2009-05-28): Add definition to Terminology Section.
C.3. ex-copy-multiple-update
In Section 2.3:
Type: edit
alexey.melnikov@isode.com (2009-05-15): Add example for the case: "If
because of multiple bindings to a resource, more than one source
resource updates a single destination resource, the order of the
updates is server defined."
Resolution (2009-05-25): Example added.
C.4. ex-copy-graph
In Section 2.3:
Type: edit
alexey.melnikov@isode.com (2009-05-15): Add example for the case
discussed below: "If a COPY request would cause a new resource to be
created as a copy of an existing resource, and that COPY request has
already created a copy of that existing resource, ..."
julian.reschke@greenbytes.de (2009-05-18): It seems that we already
have that example, see "2.3.2. Example: COPY with 'Depth: infinity'
with Multiple Bindings to a Leaf Resource".
Resolution (2009-05-25): Added forward reference to example.
C.5. ex-live-property
In Section 2.6:
Type: edit
alexey.melnikov@isode.com (2009-05-15): Give an example of a live
property where the value depends on the path.
julian.reschke@greenbytes.de (2009-05-19): Thread in which the latest
version of this paragraph was discussed: <http://lists.w3.org/
Archives/Public/w3c-dist-auth/2005JulSep/0023.html>.
C.6. clarify-alternate-uri
In Section 3.1:
Type: change
alexey.melnikov@isode.com (2009-05-15): The note about resource-id
being an alternate URI is confusing.
julian.reschke@greenbytes.de (2009-05-25): This was added in draft
19, dealing with issue "3.1-clarify-resource-id" (<http://
greenbytes.de/tech/webdav/
draft-ietf-webdav-bind-issues.html#issue.3.1-clarify-resource-id>).
See also <http://lists.w3.org/Archives/Public/w3c-dist-auth/
2007OctDec/0029.html>. Proposal: either clarify (expand) or remove
it.
Resolution (2009-05-25): Statement removed.
Index Index
2 2
208 Already Reported (status code) 31, 39 208 Already Reported (status code) 32, 40
5 5
506 Loop Detected (status code) 34, 39 506 Loop Detected (status code) 35, 40
B B
BIND method 21 BIND method 22
Marshalling 22 Marshalling 23
Postconditions 23 Postconditions 24
Preconditions 22 Preconditions 23
Binding 7 Binding 7
Binding Integrity 7-8, 22
C C
Collection 7 Collection 7
Condition Names Condition Names
DAV:bind-into-collection (pre) 22 DAV:bind-into-collection (pre) 23
DAV:bind-source-exists (pre) 22 DAV:bind-source-exists (pre) 23
DAV:binding-allowed (pre) 23 DAV:binding-allowed (pre) 24
DAV:binding-deleted (post) 25, 28 DAV:binding-deleted (post) 26, 29
DAV:can-overwrite (pre) 23, 27 DAV:can-overwrite (pre) 24, 28
DAV:cross-server-binding (pre) 23, 27 DAV:cross-server-binding (pre) 24, 28
DAV:cycle-allowed (pre) 23, 27 DAV:cycle-allowed (pre) 24, 28
DAV:lock-deleted (post) 25, 28 DAV:lock-deleted (post) 26, 29
DAV:locked-overwrite-allowed (pre) 23 DAV:locked-overwrite-allowed (pre) 24
DAV:locked-source-collection-update-allowed (pre) 28 DAV:locked-source-collection-update-allowed (pre) 29
DAV:locked-update-allowed (pre) 23, 25, 27 DAV:locked-update-allowed (pre) 24, 26, 28
DAV:name-allowed (pre) 23, 27 DAV:name-allowed (pre) 24, 28
DAV:new-binding (post) 23, 28 DAV:new-binding (post) 24, 29
DAV:protected-source-url-deletion-allowed (pre) 28 DAV:protected-source-url-deletion-allowed (pre) 29
DAV:protected-url-deletion-allowed (pre) 25 DAV:protected-url-deletion-allowed (pre) 26
DAV:protected-url-modification-allowed (pre) 27 DAV:protected-url-modification-allowed (pre) 28
DAV:rebind-from-collection (pre) 27 DAV:rebind-from-collection (pre) 28
DAV:rebind-source-exists (pre) 27 DAV:rebind-source-exists (pre) 28
DAV:unbind-from-collection (pre) 25 DAV:unbind-from-collection (pre) 26
DAV:unbind-source-exists (pre) 25 DAV:unbind-source-exists (pre) 26
D D
DAV header DAV header
compliance class 'bind' 34 compliance class 'bind' 35
DAV:bind-into-collection precondition 22 DAV:bind-into-collection precondition 23
DAV:bind-source-exists precondition 22 DAV:bind-source-exists precondition 23
DAV:binding-allowed precondition 23 DAV:binding-allowed precondition 24
DAV:binding-deleted postcondition 25, 28 DAV:binding-deleted postcondition 26, 29
DAV:can-overwrite precondition 23, 27 DAV:can-overwrite precondition 24, 28
DAV:cross-server-binding precondition 23, 27 DAV:cross-server-binding precondition 24, 28
DAV:cycle-allowed precondition 23, 27 DAV:cycle-allowed precondition 24, 28
DAV:lock-deleted postcondition 25, 28 DAV:lock-deleted postcondition 26, 29
DAV:locked-overwrite-allowed precondition 23 DAV:locked-overwrite-allowed precondition 24
DAV:locked-source-collection-update-allowed precondition 28 DAV:locked-source-collection-update-allowed precondition 29
DAV:locked-update-allowed precondition 23, 25, 27 DAV:locked-update-allowed precondition 24, 26, 28
DAV:name-allowed precondition 23, 27 DAV:name-allowed precondition 24, 28
DAV:new-binding postcondition 23, 28 DAV:new-binding postcondition 24, 29
DAV:parent-set property 20 DAV:parent-set property 21
DAV:protected-source-url-deletion-allowed precondition 28 DAV:protected-source-url-deletion-allowed precondition 29
DAV:protected-url-deletion-allowed precondition 25 DAV:protected-url-deletion-allowed precondition 26
DAV:protected-url-modification-allowed precondition 27 DAV:protected-url-modification-allowed precondition 28
DAV:rebind-from-collection precondition 27 DAV:rebind-from-collection precondition 28
DAV:rebind-source-exists precondition 27 DAV:rebind-source-exists precondition 28
DAV:resource-id property 19 DAV:resource-id property 20
DAV:unbind-from-collection precondition 25 DAV:unbind-from-collection precondition 26
DAV:unbind-source-exists precondition 25 DAV:unbind-source-exists precondition 26
I I
Internal Member URI 7 Internal Member URI 7
M M
Methods Methods
BIND 21 BIND 22
REBIND 26 REBIND 27
UNBIND 24 UNBIND 25
P P
Path Segment 6 Path Segment 6
Properties Properties
DAV:parent-set 20 DAV:parent-set 21
DAV:resource-id 19 DAV:resource-id 20
R R
REBIND method 26 REBIND method 27
Marshalling 26 Marshalling 27
Postconditions 28 Postconditions 29
Preconditions 27 Preconditions 28
S S
Status Codes Status Codes
208 Already Reported 31, 39 208 Already Reported 32, 40
506 Loop Detected 34, 39 506 Loop Detected 35, 40
U U
UNBIND method 24 UNBIND method 25
Marshalling 24 Marshalling 25
Postconditions 25 Postconditions 26
Preconditions 25 Preconditions 26
URI Mapping 6 URI Mapping 6
Authors' Addresses Authors' Addresses
Geoffrey Clemm Geoffrey Clemm
IBM IBM
20 Maguire Road 20 Maguire Road
Lexington, MA 02421 Lexington, MA 02421
Email: geoffrey.clemm@us.ibm.com Email: geoffrey.clemm@us.ibm.com
 End of changes. 35 change blocks. 
157 lines changed or deleted 289 lines changed or added

This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/