Re: WebDAV MOVE

On 25.11.2003, at 16:32, Geoffrey M Clemm wrote:
> There are 3 obvious alternatives to move one set of resources
> to another location:
> - MOVE (cheap, least likely to work)
> - COPY/DELETE (more expensive, more likely to work)
> - PUT*/DELETE (most expensive, most likely to work)
>
> So a client that cares about efficiency will try these three
> methods in the above order, until one succeeds.  So what use
> would it be for a server to say "out of the namespace I process"?

So that the client knows that he should continue with COPY. If the 
client has no read access to the resource to be moved (access is 403 
Forbidden!), it doesn't make sense to continue?!
On the other side you are right, the client will find out about that in 
the last option, GET - if this returns Forbidden, we know that it is 
really an access issue.

> The client will try the next method in either case.

Well, if the server says that access to the resource is forbidden, I as 
the client, would not try the next method.

> So is there anything that a server can do to expedite this
> sequence?  The only thing I can think of is to have the
> server have a special error code for MOVE that says "don't try to fake
> MOVE with COPY or PUT*, because I know those will also fail"
> and a special code for COPY that says "don't try to fake copy
> with PUT*, because I know that will also fail".

Well, this is 403 (Access) Forbidden ;-) Using that access status code 
to signal some technically completely different issue (the resource 
cannot be moved on the server side due to operational restrictions) 
seems a bit weird to me.
But if I'm supposed to do it that way, I do.

BTW: another status which might be somewhat appropriate from the 
semantics is 501, Not Implemented. But this probably implies in the 
client that the whole method is not implemented which isn't what we 
want either.

> But I think the likelihood that the MOVE or COPY implementation
> will know this is small, and the benefit of skipping those
> attempts is also small, so the overall benefit is very small.

Well, I think that this is the common case. MOVE will usually map the 
URI to some internal storage URL, eg

   /publicstorage/image.gif         to mod_dav /image.gif
   /dynamicservice/GroupwareFolder/ to servlet /GroupwareFolder

and this mapping process will know whether source and target are going 
to be processed by the same service.

Anyway, no intention to start a huge discussion on that. If there is no 
other way, I simply return 403 - I just wanted to make sure that I'm 
not missing something in the WebDAV spec.

regards,
   Helge
-- 
I'm describing in a paragraph what took 14 hours to figure out. You may 
want to sniff glue for a while, then reread this when you get out of 
rehab. [aLa]

Received on Tuesday, 25 November 2003 10:54:14 UTC