Re: Lock

Let's assume that during your initial get, the server returns an ETag
header such as:

ETag: "abc"

When you lock the resource, you can send back something like:

If-Match: "abc"

If the document has changed, then the ETag should have changed and the
server will return 412 (Precondition Failed).

Alternatively, you can use WebDAV's If: header like so:

If: (["abc"])

You should also receive a 412 (Precondition Failed) in case the ETag no
longer matches.

And to be explicit: you *can* send the If: or If-*: headers with your LOCK
method. By definition, a WebDAV server MUST support the If: header. I
can't really determine whether an HTTP server MUST/MAY/SHOULD support the
If-Match: header... the language is awfully complex the HTTP spec :-)

Cheers,
-g

ps. fyi: for the mod_dav case, Apache handles If-Match: and providing the
ETag: header. mod_dav handles the If: header.


On Tue, 8 Feb 2000 rickard.falk@excosoft.se wrote:
> Ok... But the real issue is if I can make sure that the Lock command tells me, 
> if I'm trying to lock something that has been updated. There is nothing in the 
> webdav spec. that specifies this behaviour, right? Can I even rely on that if I 
> send the E-tag, that the server is supporting this behavour on a Lock command?  
> ( this maybe applies to some other commands to... )
> If the resource is changed, what reply can I expect from the server?
> 
> /Rickard
> 
> > 
> > I would like to voice *very* strong support for Greg's suggestion.  In
> > the presence of versioning, date comparisons such as "Last-Modified"
> > or "If-Unmodified-Since" do not provide you with reliable information
> > about the accuracy of what you have in your cache.  In particular, if
> > an older revision is made the default revision of a versioned
> > resource, it will have an older date, but your cache should be updated
> > with that older value.
> > 
> > So ETag values should be the only ones you use to verify that you are
> > seeing the current value of a resource.
> > 
> > Cheers,
> > Geoff
> > 
> >    Date: Tue, 8 Feb 2000 03:34:19 -0800 (PST)
> >    From: Greg Stein <gstein@lyra.org>
> > 
> >    On Tue, 8 Feb 2000, Rickard Falk wrote:
> >    > I have another 'client side' related question.
> >    > When I'm issuing a Lock command, can I include the 'If-Unmodified-Since' 
> in
> >    > the header ( http standard parameter...)?
> >    > In our client a user can browse through allot of files, without having 
> them
> >    > locked. Then when he wants to edit the file, he then presses a lock 
> button.
> >    > But when he presses this button, the client must make sure that the file
> >    > that he has read, is the latest one. Today I'm doing a Lock, then a Head
> >    > command to se if the 'Last-Modified' parameter is changed since the Get. 
> It
> >    > would be much easier if I just could add the 'If-Unmodified-Since' in the
> >    > Lock request.
> > 
> >    You should be able to use If-Unmodified-Since (mod_dav will check for it).
> > 
> >    Note that you could also use ETag values to check for changes. I think the
> >    ETag is probably the Right Way to look for possible changes on the server.
> > 
> >    Cheers,
> >    -g
> > 
> >    -- 
> >    Greg Stein, http://www.lyra.org/
> > 
> > 
> 
> 

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

Received on Tuesday, 8 February 2000 21:59:59 UTC