WGLC issue: P4 - ETags & conditional requests

Ben Niven-Jenkins <ben@niven-jenkins.co.uk> Mon, 23 April 2012 17:50 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id B3AD421F8759 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 23 Apr 2012 10:50:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.599
X-Spam-Status: No, score=-8.599 tagged_above=-999 required=5 tests=[AWL=2.000, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id bMnDzBzCP1U6 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 23 Apr 2012 10:50:34 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org []) by ietfa.amsl.com (Postfix) with ESMTP id BDCE121F873C for <httpbisa-archive-bis2Juki@lists.ietf.org>; Mon, 23 Apr 2012 10:50:30 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.69) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1SMNNB-0004db-W9 for ietf-http-wg-dist@listhub.w3.org; Mon, 23 Apr 2012 17:48:26 +0000
Received: from maggie.w3.org ([]) by frink.w3.org with esmtp (Exim 4.69) (envelope-from <ben@niven-jenkins.co.uk>) id 1SMNN0-0004b5-12 for ietf-http-wg@listhub.w3.org; Mon, 23 Apr 2012 17:48:14 +0000
Received: from mailex.mailcore.me ([]) by maggie.w3.org with esmtp (Exim 4.72) (envelope-from <ben@niven-jenkins.co.uk>) id 1SMNMw-00034I-FH for ietf-http-wg@w3.org; Mon, 23 Apr 2012 17:48:11 +0000
Received: from cpc4-cmbg17-2-0-cust814.5-4.cable.virginmedia.com ([] helo=[]) by mail6.atlas.pipex.net with esmtpa (Exim 4.71) (envelope-from <ben@niven-jenkins.co.uk>) id 1SMNMb-0002Jo-41; Mon, 23 Apr 2012 18:47:49 +0100
From: Ben Niven-Jenkins <ben@niven-jenkins.co.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Date: Mon, 23 Apr 2012 18:47:46 +0100
Message-Id: <B5E63193-2450-41AD-A3AA-047755F2189D@niven-jenkins.co.uk>
Cc: John Sullivan <jsullivan@velocix.com>
To: "ietf-http-wg@w3.org Group" <ietf-http-wg@w3.org>
Mime-Version: 1.0 (Apple Message framework v1084)
X-Mailer: Apple Mail (2.1084)
X-Mailcore-Auth: 9600544
X-Mailcore-Domain: 172912
Received-SPF: none client-ip=; envelope-from=ben@niven-jenkins.co.uk; helo=mailex.mailcore.me
X-W3C-Hub-Spam-Status: No, score=-1.9
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DECEASED_NO_ML=0.001, RCVD_IN_DNSWL_NONE=-0.0001
X-W3C-Scan-Sig: maggie.w3.org 1SMNMw-00034I-FH 3ea4cad914cc8a03e9f5d9957175927e
X-Original-To: ietf-http-wg@w3.org
Subject: WGLC issue: P4 - ETags & conditional requests
Archived-At: <http://www.w3.org/mid/B5E63193-2450-41AD-A3AA-047755F2189D@niven-jenkins.co.uk>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/13462
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>
Resent-Message-Id: <E1SMNNB-0004db-W9@frink.w3.org>
Resent-Date: Mon, 23 Apr 2012 17:48:25 +0000


Apologies that this mail misses the WG LC deadline, in Velocix we're reviewing all the HTTPBIS documents but we're a little behind, hence the late comments, sorry. (we're still reviewing so might have more comments as we work through the documents)

On page 14 of P4 it states:

   If none of the entity-tags match, or if "*" is given and no current
   representation exists, the server MUST NOT perform the requested
   method.  Instead, the server MUST respond with the 412 (Precondition
   Failed) status code.

This appears to apply to intermediates, but If-Match has a problem
here that If-Unmodified-Since does not. If a proxy has a cached
entity which has a newer Last-Modified timestamp it *knows* that
the conditional has failed and can generate the required
412 Precondition Failed response itself. Otherwise it can satisfy
the request from cache. Or relay if there is no current cached

But because multiple responses with different ETags may exist then a cache receiving If-Match with one etag, when it has a different etag cached, can not know for sure that the request etag does not exist. If it were to respond with a 412 status it would effectively be preventing the use of that conditional.

It would appear that the only two options available to an intermediate are to satisfy the request in the case of a known match, and relay upstream in all other cases (which would be in conflict with the spec as quoted above).