- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Wed, 30 Jun 2004 20:26:31 +0200
- To: Lisa Dusseault <lisa@osafoundation.org>
- Cc: WebDAV <w3c-dist-auth@w3.org>
Lisa Dusseault wrote:
>
> So, there hasn't exactly been overwhelming response to this. We found
> out that one client implementation does not rely on having the
> 'lockdiscovery' property in the body of failed LOCK responses (though
> they do use the property in other situations -- and thanks, Jim).
>
> Problem summarized: the spec only shows by example how to include the
> property in the body of a 207, and the example doesn't follow the DTD.
>
> Proposed solutions summarized:
> 1. Define a new way to put 'lockdiscovery' in the body of a 207 to
> indicate a failed dependency, make existing servers change.
> 2. Leave it out (simpler) because clients don't seem to use it and can
> always make a second trip in this (hopefully rare) failure case.
>
> There's been some mild interest shown in the "leave it out" solution
> mostly because it simplifies the spec, although I think that it's also
> got a significant advantage in not requiring servers to change behavior.
>
> Any objections to the "leave it out" solution (or further comments in
> favour)?
Well, I'm in favor not to put in special cases. Right now my text reads:
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/webdav/secret</D:href>
<D:status>HTTP/1.1 403 Forbidden</D:status>
</D:response>
<D:response>
<D:href>/webdav/</D:href>
<D:status>HTTP/1.1 424 Failed Dependency</D:status>
</D:response>
</D:multistatus>
(because /webdav/secret just denied the lock without any details). Let's
assume instead /webdav/secret would have had a lock conflicting with the
request, then we'd get
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/webdav/secret</D:href>
<D:status>HTTP/1.1 423 Locked</D:status>
</D:response>
<D:response>
<D:href>/webdav/</D:href>
<D:status>HTTP/1.1 424 Failed Dependency</D:status>
</D:response>
</D:multistatus>
...and assuming the LOCK (creation) method definition would define a
matching precondition that would become:
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/webdav/secret</D:href>
<D:status>HTTP/1.1 423 Locked</D:status>
<D:responsedescription>
<D:error>
<D:no-lock-conflict>
<D:href>locktoken:...</D:href>
</D:no-lock-conflict>
</D:error>
</D:responsedescription>
</D:response>
<D:response>
<D:href>/webdav/</D:href>
<D:status>HTTP/1.1 424 Failed Dependency</D:status>
</D:response>
</D:multistatus>
Note that this really nothing new; it would just follow from existing
DAV:error marshalling once we simply *name* that precondition.
Also note that this only avoids a round trip to the child resource to
lookup the conflicting lock. I guess only few clients would ever want to
know...
Best regards, Julian
--
<green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760
Received on Wednesday, 30 June 2004 14:27:18 UTC