If: header and "parent" resource checking

I'm going through mod_dav right now and refining/verifying what resources
it checks during If: header processing. I'm taking a particular approach
that I want to bounce off the group to see if this makes sense and is
"proper".

Specifically, it revolves around whether we need to check the "parent"
resource to see if it is locked and the If: header contains those locks.
Say you're doing a MKCOL. The spec states that you must satisfy the locks
held on the parent resource. The following cases are a bit less obvious:

*) when using LOCK to create a locknull resource, this effectively creates
   a new resource in the parent collection.
   ==> parent resource should be checked

*) when using UNLOCK on a locknull, this effectively deletes a resource
   from the parent collection
   ==> parent resource should be checked

*) using MOVE on a resource: this removes the resource from the parent
   ==> parent resource should be checked

*) MOVE and COPY create resources at the Destination
   ==> parent resource of the Destination should be checked

*) MKCOL on a null resource
   ==> parent resource should be checked

*) MKCOL on a locknull resource does not add any resources to the parent
   collection
   ==> parent resource SHOULD NOT be checked
   (the [locknull] resource itself will be checked, however)

*) PUT operates similar to MKCOL w.r.t. locknull resources


Note that this can be an interoperability item. If one server enforces
that conditions be met for the parent, but another doesn't, then a client
(that doesn't provide parent conditions) could fail.

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/

Received on Saturday, 27 May 2000 15:56:25 UTC