title: Which HTTP status code to use to reject a PUT due to optimistic locking failure
body: <p>Assume I'd like to implement some kind of optimistic locking and use ETags to indicate the most up to date resource state. This means, clients will use an <code>If-Match</code> header when <code>PUT</code>ting for an update.</p>
  
  <p>According to the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24">HTTP spec</a>, the server has to return <code>412 Precondition failed</code> if the ETag provided for the <code>If-Match</code> header doesn't match the current state of the resource. </p>
  
  <p>However, <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10"><code>409 Conflict</code></a> seems to be closer to what I want to express semantically, especially as it gives guidelines what to include in the response.</p>
  
  <p>Is it terribly wrong to rather return <code>409</code> in case of a failure to match an ETag provided in an <code>If-Match</code> header?</p>