RE: Binding loops and PROPFIND clarification needed (was Re: COPY and bindings)

Chris,

you are right that this probably should be explained a bit better.

My p.o.v. (which seems to be compatible with the example) is that the 506
should be reported once the depth:infinity processing encounters a resource
that already has been traversed/reported. So, in your example, you'd report
a 506 for "/A/B/C" -- note that you can't report the same resource twice.

It's also correct that this means that a client that wants to replicate
bindings will need an additional PROPFIND against "/A/B/C" to get the
DAV:resource-id.

However, this *only* applies to depth:infinity processing, which is sort of
deprecated anyway (meaning servers are allowed to reject these requests, and
I think moddav does this by default).

So my understanding is that a "modern" client would only do depth:1
PROPFINDs, and thus never see a 506.

Regards, Julian

--
<green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760

> -----Original Message-----
> From: Chris Knight [mailto:Christopher.D.Knight@nasa.gov]
> Sent: Friday, July 11, 2003 11:25 PM
> To: Julian Reschke
> Cc: 'w3c-dist-auth@w3.org'
> Subject: Binding loops and PROPFIND clarification needed (was Re: COPY
> and bindings)
>
>
> Reading this discussion has brought up another point of confusion that
> may need clarification in the spec. If you have a binding loop and you
> are doing a Depth: infinity PROPFIND, you either (correct me if I'm
> wrong, 'course):
>
> a) return a 506 Loop Detected error
> b) return a 207 Multistatus containing responses and when you come
> across loops, identify them as such with a 506 Loop Detected
>
> What's unclear to me (perhaps due to the example given in the spec) is
> that, in the second case, do you continue traversing the tree when a 506
> is encountered or do you terminate traversal?
>
> For example, if you had the following example:
>              --C-
>             v      |
> 1-A->2-B->3
>    -D->4
>
> Sorry for the poor ASCII graphics and it's probably unreadable. The
> numbers represent unique resources (think of them as resource id's.) The
> textual description is that the root collection "/" contains two members
> "/A" and "/D". "/A" contains one member "/A/B" and "/A/B" contains one
> member "/A/B/C" which is bound to "/A" (resource id 2).
>
> Now, presuming we do a depth-first search and we go down "/A/B" first,
> we would report a 200 for "/A", a 200 for "/A/B", a 506 for the loop
> "/A/B/C", and a 200 for "/A/D". Correct? Or do I report a 200 for
> "/A/B/C" and then a 506 for the fact that "/A/B/C" created a loop?
>
> How would I tell where the loop connected to? (i.e. how do I tell the
> loop goes back to resource id 2 and not 1?) Would I do a followup
> PROPFIND on "/A/B/C" to determine the resource id? What if I got back 10
> 506 responses?
>
> Would it be possible (correct) to either report a 200 for "/A/B/C"
> (containing the resource-id property) and then a 506? Or perhaps a
> "Resource-ID" HTTP header in the 506 response?
>
> This is important if we want clients to be able to replicate loops
> across servers.
>

Received on Friday, 11 July 2003 17:48:29 UTC