Subject: BIND issue: 2.5-move-creating-cycles

From: Julian Reschke <[email-masked]>
Date: Sun, 11 Nov 2007 21:53:56 +0100

(see 
<http://www.webdav.org/bind/draft-ietf-webdav-bind-latest.html#rfc.issue.2.5-move-creating-cycles>)

As this question comes up every now and then, I'd like to add the 
example below, showing how a MOVE can cause a bind loop if collection 
bindings are supported:

2.5.2.  Example: MOVE request causing a bind loop

    Note that in the presence of collection bindings, a MOVE request can
    cause the creating of a bind loop.

    Consider a the top level collections C1 and C2 with URIs "/CollW/"
    and "/CollX/".  C1 also contains an additional binding named "CollY"
    to C2:

                                      +------------------+
                                      | Root Collection  |
                                      |  bindings:       |
                                      |  CollW    CollX  |
                                      +------------------+
                                          |          |
                                          |          |
                             +------------------+    |
                             | Collection C1    |    |
                             |  bindings:       |    |
                             |           CollY  |    |
                             +------------------+    |
                                          |          |
                                          |          |
                                      +------------------+
                                      | Collection C2    |
                                      |                  |
                                      |                  |
                                      +------------------+

    In this case, the MOVE request below would cause a bind loop:

    >> Request:

    MOVE /CollW HTTP/1.1
    Host: example.com
    Destination: /CollX/CollZ

                                      +------------------+
                                      | Root Collection  |
                                      |  bindings:       |
                                      |           CollX  |
                                      +------------------+
                                                     |
                                                     |
                             +------------------+    |
                             | Collection C1    |    |
                      +----> |  bindings:       |    |
                      |      |           CollY  |    |
                      |      +------------------+    |
                      |                   |          |
                      |                   |          |
                      |               +------------------+
                      |               | Collection C2    |
                      |               |  bindings:       |
                      |               | CollZ            |
                      |               +------------------+
                      |                   |
                      |                   |
                      +-------------------+

(I also changed the preceding example into a separate subsection).

BR, Julian