- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Fri, 11 Jul 2003 23:48:15 +0200
- To: "Chris Knight" <Christopher.D.Knight@nasa.gov>, "Julian Reschke" <julian.reschke@gmx.de>
- Cc: <w3c-dist-auth@w3.org>
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