[Ietf-caldav] Fwd: Summary of ETag related issues in RFC2518bis

Julian Reschke julian.reschke at gmx.de
Thu Dec 22 04:00:38 PST 2005


Helge Hess wrote:
> On 22. Dez 2005, at 06:58 Uhr, Julian Reschke wrote:
>>> Basically the transaction looks like:
>>> 1-a)  PUT /blah.ics
>>> 1-b)  205, etag ABC
>>> 2-a)  GET /blah.ics, if-match: etag=ABC
>>> 2-bx) new content
>>> or
>>> 2-by) 419 Conflict (etag changed, some other user/client/server 
>>> changed the
>>>       item)
>> > ...
>>
>> Me confused. Shouldn't that be...:
>>
>> 1-a)  PUT /blah.ics
>> 1-b)  205, etag ABC
>> 2-a)  GET /blah.ics, if-none-match: etag=ABC
>> 2-bx) new content (200, etag did change)
>> or
>> 2-by) 304 Not Modified (etag did not change)
>> ?
> 
> No! :-)
> 
> The 1-b 205 says that the server changed the content and the etag 
> represents the state of this content which in turn is a result of 1-a. 
> What 2-a does is (_reliably_) fetching the result of 1-a which is 
> unknown to the client at this point.
> 
> If the if-match fails, the client knows that there is an actual conflict 
> (someone else wrote to the same resource in the meantime).
> 
> 
> Your sequence is the one to be used for refreshes if the server does not 
> change the content, that is, if it returns a 201 or 200 in step 1-b.

OK. If by "419 Conflict" you mean "412 Precondition Failed", then this 
may work :-)

Best regards, Julian


More information about the Ietf-caldav mailing list