Re: The use of status code 506 (Loop Detected)

Say we have the path /A/B/C/D/ where D/ is in fact a second
binding to /A/E/F/. If you move /A/B/ to /A/E/F/ you get
/A/E/F/B/C/D/. Because of the binding this is the same as
/A/E/F/B/C/F/, which is a loop. Note that we did a move of B/,
which is not involved in any binding itself.

It is also possible to introduce a second binding to a resource
without actually supporting the BIND method. Let's take a versioning
server, for example, with auto-version set to manual for /A/B/
and /A/C/. Say we want to move /A/B/D to /A/C/D. We have to
check out /A/B/ and /A/C/, provided we support versioning of
collections. After the move we check in /A/C/, but we undo the
check-out of /A/B/. We are then left with /A/B/D and /A/C/D,
both referring to the same resource.

So loops could occur without the binding spec being supported.

Regards,

Werner.

Julian Reschke wrote:
> Julian Reschke wrote:
>> ...
>> I think it would be better to return a 409 with 
>> DAV:error/DAV:cycle-allowed here.
>> ...
> 
> ...that being said, I wouldn't be opposed to adding an appendix that 
> both illustrates how MOVE requests can theoretically generate a bind 
> cycle, and how to handle that case.
> 
> BR, Julian
> 

-- 
Werner Donné  --  Re                                     http://www.pincette.biz
Engelbeekstraat 8                                               http://www.re.be
BE-3300 Tienen
tel: (+32) 486 425803	e-mail: werner.donne@re.be

Received on Saturday, 10 November 2007 08:11:33 UTC