source: draft-ietf-httpbis/diffs/draft-ietf-httpbis-p4-conditional-24-from-23.diff.html @ 2650

Last change on this file since 2650 was 2414, checked in by julian.reschke@…, 7 years ago

Prepare release of -24 on Sept 25

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/html; charset=iso-8859-1
File size: 224.1 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<!-- Generated by rfcdiff 1.38: rfcdiff  -->
3<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional" > -->
4<html> 
5<head> 
6  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7  <meta http-equiv="Content-Style-Type" content="text/css" />
8  <title>Diff: draft-ietf-httpbis-p4-conditional-23.txt - draft-ietf-httpbis-p4-conditional-24.txt</title>
9  <style type="text/css">
10    body    { margin: 0.4ex; margin-right: auto; }
11    tr      { }
12    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;}
13    th      { font-size: 0.86em; }
14    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; }
15    .left   { background-color: #EEE; }
16    .right  { background-color: #FFF; }
17    .diff   { background-color: #CCF; }
18    .lblock { background-color: #BFB; }
19    .rblock { background-color: #FF8; }
20    .insert { background-color: #8FF; }
21    .delete { background-color: #ACF; }
22    .void   { background-color: #FFB; }
23    .cont   { background-color: #EEE; }
24    .linebr { background-color: #AAA; }
25    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; }
26    .elipsis{ background-color: #AAA; }
27    .left .cont { background-color: #DDD; }
28    .right .cont { background-color: #EEE; }
29    .lblock .cont { background-color: #9D9; }
30    .rblock .cont { background-color: #DD6; }
31    .insert .cont { background-color: #0DD; }
32    .delete .cont { background-color: #8AD; }
33    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; }
34  </style>
35</head>
36<body > 
37  <table border="0" cellpadding="0" cellspacing="0">
38  <tr bgcolor="orange"><th></th><th>&nbsp;draft-ietf-httpbis-p4-conditional-23.txt&nbsp;</th><th> </th><th>&nbsp;draft-ietf-httpbis-p4-conditional-24.txt&nbsp;</th><th></th></tr>
39      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
40      <tr><td class="lineno" valign="top"></td><td class="left">HTTPbis Working Group                                   R. Fielding, Ed.</td><td> </td><td class="right">HTTPbis Working Group                                   R. Fielding, Ed.</td><td class="lineno" valign="top"></td></tr>
41      <tr><td class="lineno" valign="top"></td><td class="left">Internet-Draft                                                     Adobe</td><td> </td><td class="right">Internet-Draft                                                     Adobe</td><td class="lineno" valign="top"></td></tr>
42      <tr><td class="lineno" valign="top"></td><td class="left">Obsoletes: 2616 (if approved)                            J. Reschke, Ed.</td><td> </td><td class="right">Obsoletes: 2616 (if approved)                            J. Reschke, Ed.</td><td class="lineno" valign="top"></td></tr>
43      <tr><td class="lineno" valign="top"></td><td class="left">Intended status: Standards Track                              greenbytes</td><td> </td><td class="right">Intended status: Standards Track                              greenbytes</td><td class="lineno" valign="top"></td></tr>
44      <tr><td><a name="diff0001" /></td></tr>
45      <tr><td class="lineno" valign="top"></td><td class="lblock">Expires: <span class="delete">January 16, 2014                                  July 1</span>5, 2013</td><td> </td><td class="rblock">Expires: <span class="insert">March 29, 2014                               September 2</span>5, 2013</td><td class="lineno" valign="top"></td></tr>
46      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
47      <tr><td class="lineno" valign="top"></td><td class="left">      Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td><td> </td><td class="right">      Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td><td class="lineno" valign="top"></td></tr>
48      <tr><td><a name="diff0002" /></td></tr>
49      <tr><td class="lineno" valign="top"></td><td class="lblock">                  draft-ietf-httpbis-p4-conditional-2<span class="delete">3</span></td><td> </td><td class="rblock">                  draft-ietf-httpbis-p4-conditional-2<span class="insert">4</span></td><td class="lineno" valign="top"></td></tr>
50      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
51      <tr><td class="lineno" valign="top"></td><td class="left">Abstract</td><td> </td><td class="right">Abstract</td><td class="lineno" valign="top"></td></tr>
52      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
53      <tr><td class="lineno" valign="top"></td><td class="left">   The Hypertext Transfer Protocol (HTTP) is an application-level</td><td> </td><td class="right">   The Hypertext Transfer Protocol (HTTP) is an application-level</td><td class="lineno" valign="top"></td></tr>
54      <tr><td class="lineno" valign="top"></td><td class="left">   protocol for distributed, collaborative, hypertext information</td><td> </td><td class="right">   protocol for distributed, collaborative, hypertext information</td><td class="lineno" valign="top"></td></tr>
55      <tr><td class="lineno" valign="top"></td><td class="left">   systems.  This document defines HTTP/1.1 conditional requests,</td><td> </td><td class="right">   systems.  This document defines HTTP/1.1 conditional requests,</td><td class="lineno" valign="top"></td></tr>
56      <tr><td class="lineno" valign="top"></td><td class="left">   including metadata header fields for indicating state changes,</td><td> </td><td class="right">   including metadata header fields for indicating state changes,</td><td class="lineno" valign="top"></td></tr>
57      <tr><td class="lineno" valign="top"></td><td class="left">   request header fields for making preconditions on such state, and</td><td> </td><td class="right">   request header fields for making preconditions on such state, and</td><td class="lineno" valign="top"></td></tr>
58      <tr><td class="lineno" valign="top"></td><td class="left">   rules for constructing the responses to a conditional request when</td><td> </td><td class="right">   rules for constructing the responses to a conditional request when</td><td class="lineno" valign="top"></td></tr>
59      <tr><td class="lineno" valign="top"></td><td class="left">   one or more preconditions evaluate to false.</td><td> </td><td class="right">   one or more preconditions evaluate to false.</td><td class="lineno" valign="top"></td></tr>
60      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
61      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 1, line 33</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 1, line 33</em></th><td></td></tr>
62      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
63      <tr><td class="lineno" valign="top"></td><td class="left">   Discussion of this draft takes place on the HTTPBIS working group</td><td> </td><td class="right">   Discussion of this draft takes place on the HTTPBIS working group</td><td class="lineno" valign="top"></td></tr>
64      <tr><td class="lineno" valign="top"></td><td class="left">   mailing list (ietf-http-wg@w3.org), which is archived at</td><td> </td><td class="right">   mailing list (ietf-http-wg@w3.org), which is archived at</td><td class="lineno" valign="top"></td></tr>
65      <tr><td class="lineno" valign="top"></td><td class="left">   &lt;http://lists.w3.org/Archives/Public/ietf-http-wg/&gt;.</td><td> </td><td class="right">   &lt;http://lists.w3.org/Archives/Public/ietf-http-wg/&gt;.</td><td class="lineno" valign="top"></td></tr>
66      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
67      <tr><td class="lineno" valign="top"></td><td class="left">   The current issues list is at</td><td> </td><td class="right">   The current issues list is at</td><td class="lineno" valign="top"></td></tr>
68      <tr><td class="lineno" valign="top"></td><td class="left">   &lt;http://tools.ietf.org/wg/httpbis/trac/report/3&gt; and related</td><td> </td><td class="right">   &lt;http://tools.ietf.org/wg/httpbis/trac/report/3&gt; and related</td><td class="lineno" valign="top"></td></tr>
69      <tr><td class="lineno" valign="top"></td><td class="left">   documents (including fancy diffs) can be found at</td><td> </td><td class="right">   documents (including fancy diffs) can be found at</td><td class="lineno" valign="top"></td></tr>
70      <tr><td class="lineno" valign="top"></td><td class="left">   &lt;http://tools.ietf.org/wg/httpbis/&gt;.</td><td> </td><td class="right">   &lt;http://tools.ietf.org/wg/httpbis/&gt;.</td><td class="lineno" valign="top"></td></tr>
71      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
72      <tr><td><a name="diff0003" /></td></tr>
73      <tr><td class="lineno" valign="top"></td><td class="lblock">   The changes in this draft are summarized in Appendix D.<span class="delete">4</span>.</td><td> </td><td class="rblock">   The changes in this draft are summarized in Appendix D.<span class="insert">5</span>.</td><td class="lineno" valign="top"></td></tr>
74      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
75      <tr><td class="lineno" valign="top"></td><td class="left">Status of This Memo</td><td> </td><td class="right">Status of This Memo</td><td class="lineno" valign="top"></td></tr>
76      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
77      <tr><td class="lineno" valign="top"></td><td class="left">   This Internet-Draft is submitted in full conformance with the</td><td> </td><td class="right">   This Internet-Draft is submitted in full conformance with the</td><td class="lineno" valign="top"></td></tr>
78      <tr><td class="lineno" valign="top"></td><td class="left">   provisions of BCP 78 and BCP 79.</td><td> </td><td class="right">   provisions of BCP 78 and BCP 79.</td><td class="lineno" valign="top"></td></tr>
79      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
80      <tr><td class="lineno" valign="top"></td><td class="left">   Internet-Drafts are working documents of the Internet Engineering</td><td> </td><td class="right">   Internet-Drafts are working documents of the Internet Engineering</td><td class="lineno" valign="top"></td></tr>
81      <tr><td class="lineno" valign="top"></td><td class="left">   Task Force (IETF).  Note that other groups may also distribute</td><td> </td><td class="right">   Task Force (IETF).  Note that other groups may also distribute</td><td class="lineno" valign="top"></td></tr>
82      <tr><td class="lineno" valign="top"></td><td class="left">   working documents as Internet-Drafts.  The list of current Internet-</td><td> </td><td class="right">   working documents as Internet-Drafts.  The list of current Internet-</td><td class="lineno" valign="top"></td></tr>
83      <tr><td class="lineno" valign="top"></td><td class="left">   Drafts is at http://datatracker.ietf.org/drafts/current/.</td><td> </td><td class="right">   Drafts is at http://datatracker.ietf.org/drafts/current/.</td><td class="lineno" valign="top"></td></tr>
84      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
85      <tr><td class="lineno" valign="top"></td><td class="left">   Internet-Drafts are draft documents valid for a maximum of six months</td><td> </td><td class="right">   Internet-Drafts are draft documents valid for a maximum of six months</td><td class="lineno" valign="top"></td></tr>
86      <tr><td class="lineno" valign="top"></td><td class="left">   and may be updated, replaced, or obsoleted by other documents at any</td><td> </td><td class="right">   and may be updated, replaced, or obsoleted by other documents at any</td><td class="lineno" valign="top"></td></tr>
87      <tr><td class="lineno" valign="top"></td><td class="left">   time.  It is inappropriate to use Internet-Drafts as reference</td><td> </td><td class="right">   time.  It is inappropriate to use Internet-Drafts as reference</td><td class="lineno" valign="top"></td></tr>
88      <tr><td class="lineno" valign="top"></td><td class="left">   material or to cite them other than as "work in progress."</td><td> </td><td class="right">   material or to cite them other than as "work in progress."</td><td class="lineno" valign="top"></td></tr>
89      <tr><td><a name="diff0004" /></td></tr>
90      <tr><td class="lineno" valign="top"></td><td class="lblock">   This Internet-Draft will expire on <span class="delete">January 16</span>, 2014.</td><td> </td><td class="rblock">   This Internet-Draft will expire on <span class="insert">March 29</span>, 2014.</td><td class="lineno" valign="top"></td></tr>
91      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
92      <tr><td class="lineno" valign="top"></td><td class="left">Copyright Notice</td><td> </td><td class="right">Copyright Notice</td><td class="lineno" valign="top"></td></tr>
93      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
94      <tr><td class="lineno" valign="top"></td><td class="left">   Copyright (c) 2013 IETF Trust and the persons identified as the</td><td> </td><td class="right">   Copyright (c) 2013 IETF Trust and the persons identified as the</td><td class="lineno" valign="top"></td></tr>
95      <tr><td class="lineno" valign="top"></td><td class="left">   document authors.  All rights reserved.</td><td> </td><td class="right">   document authors.  All rights reserved.</td><td class="lineno" valign="top"></td></tr>
96      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
97      <tr><td class="lineno" valign="top"></td><td class="left">   This document is subject to BCP 78 and the IETF Trust's Legal</td><td> </td><td class="right">   This document is subject to BCP 78 and the IETF Trust's Legal</td><td class="lineno" valign="top"></td></tr>
98      <tr><td class="lineno" valign="top"></td><td class="left">   Provisions Relating to IETF Documents</td><td> </td><td class="right">   Provisions Relating to IETF Documents</td><td class="lineno" valign="top"></td></tr>
99      <tr><td class="lineno" valign="top"></td><td class="left">   (http://trustee.ietf.org/license-info) in effect on the date of</td><td> </td><td class="right">   (http://trustee.ietf.org/license-info) in effect on the date of</td><td class="lineno" valign="top"></td></tr>
100      <tr><td class="lineno" valign="top"></td><td class="left">   publication of this document.  Please review these documents</td><td> </td><td class="right">   publication of this document.  Please review these documents</td><td class="lineno" valign="top"></td></tr>
101      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
102      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 3, line 26</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 3, line 26</em></th><td></td></tr>
103      <tr><td class="lineno" valign="top"></td><td class="left">       2.3.1.  Generation . . . . . . . . . . . . . . . . . . . . . . 10</td><td> </td><td class="right">       2.3.1.  Generation . . . . . . . . . . . . . . . . . . . . . . 10</td><td class="lineno" valign="top"></td></tr>
104      <tr><td class="lineno" valign="top"></td><td class="left">       2.3.2.  Comparison . . . . . . . . . . . . . . . . . . . . . . 10</td><td> </td><td class="right">       2.3.2.  Comparison . . . . . . . . . . . . . . . . . . . . . . 10</td><td class="lineno" valign="top"></td></tr>
105      <tr><td class="lineno" valign="top"></td><td class="left">       2.3.3.  Example: Entity-tags Varying on Content-Negotiated</td><td> </td><td class="right">       2.3.3.  Example: Entity-tags Varying on Content-Negotiated</td><td class="lineno" valign="top"></td></tr>
106      <tr><td class="lineno" valign="top"></td><td class="left">               Resources  . . . . . . . . . . . . . . . . . . . . . . 11</td><td> </td><td class="right">               Resources  . . . . . . . . . . . . . . . . . . . . . . 11</td><td class="lineno" valign="top"></td></tr>
107      <tr><td class="lineno" valign="top"></td><td class="left">     2.4.  When to Use Entity-tags and Last-Modified Dates  . . . . . 12</td><td> </td><td class="right">     2.4.  When to Use Entity-tags and Last-Modified Dates  . . . . . 12</td><td class="lineno" valign="top"></td></tr>
108      <tr><td class="lineno" valign="top"></td><td class="left">   3.  Precondition Header Fields . . . . . . . . . . . . . . . . . . 13</td><td> </td><td class="right">   3.  Precondition Header Fields . . . . . . . . . . . . . . . . . . 13</td><td class="lineno" valign="top"></td></tr>
109      <tr><td class="lineno" valign="top"></td><td class="left">     3.1.  If-Match . . . . . . . . . . . . . . . . . . . . . . . . . 13</td><td> </td><td class="right">     3.1.  If-Match . . . . . . . . . . . . . . . . . . . . . . . . . 13</td><td class="lineno" valign="top"></td></tr>
110      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  If-None-Match  . . . . . . . . . . . . . . . . . . . . . . 14</td><td> </td><td class="right">     3.2.  If-None-Match  . . . . . . . . . . . . . . . . . . . . . . 14</td><td class="lineno" valign="top"></td></tr>
111      <tr><td class="lineno" valign="top"></td><td class="left">     3.3.  If-Modified-Since  . . . . . . . . . . . . . . . . . . . . 15</td><td> </td><td class="right">     3.3.  If-Modified-Since  . . . . . . . . . . . . . . . . . . . . 15</td><td class="lineno" valign="top"></td></tr>
112      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  If-Unmodified-Since  . . . . . . . . . . . . . . . . . . . 16</td><td> </td><td class="right">     3.4.  If-Unmodified-Since  . . . . . . . . . . . . . . . . . . . 16</td><td class="lineno" valign="top"></td></tr>
113      <tr><td><a name="diff0005" /></td></tr>
114      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.5.  If-Range . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">16</span></td><td> </td><td class="rblock">     3.5.  If-Range . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">18</span></td><td class="lineno" valign="top"></td></tr>
115      <tr><td class="lineno" valign="top"></td><td class="lblock">   4.  Status Code Definitions  . . . . . . . . . . . . . . . . . . . <span class="delete">17</span></td><td> </td><td class="rblock">   4.  Status Code Definitions  . . . . . . . . . . . . . . . . . . . <span class="insert">18</span></td><td class="lineno" valign="top"></td></tr>
116      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.1.  304 Not Modified . . . . . . . . . . . . . . . . . . . . . <span class="delete">17</span></td><td> </td><td class="rblock">     4.1.  304 Not Modified . . . . . . . . . . . . . . . . . . . . . <span class="insert">18</span></td><td class="lineno" valign="top"></td></tr>
117      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.2.  412 Precondition Failed  . . . . . . . . . . . . . . . . . <span class="delete">17</span></td><td> </td><td class="rblock">     4.2.  412 Precondition Failed  . . . . . . . . . . . . . . . . . <span class="insert">18</span></td><td class="lineno" valign="top"></td></tr>
118      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  Evaluation <span class="delete">and Precedence</span>  . . . . . . . . . . . . . . . . . . <span class="delete">17</span></td><td> </td><td class="rblock">   5.  Evaluation . . . . . . . . . . . . . . . . . . <span class="insert">. . . . . . . . 19</span></td><td class="lineno" valign="top"></td></tr>
119      <tr><td class="lineno" valign="top"></td><td class="lblock">   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . <span class="delete">20</span></td><td> </td><td class="rblock">   6.  <span class="insert">Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . 19</span></td><td class="lineno" valign="top"></td></tr>
120      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.1.</span>  Status Code Registration . . . . . . . . . . . . . . . . . <span class="delete">20</span></td><td> </td><td class="rblock"><span class="insert">   7.</span>  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
121      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.2.</span>  Header Field Registration  . . . . . . . . . . . . . . . . <span class="delete">20</span></td><td> </td><td class="rblock"><span class="insert">     7.1.</span>  Status Code Registration . . . . . . . . . . . . . . . . . <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
122      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   7.</span>  Security Considerations  . . . . . . . . . . . . . . . . . . . <span class="delete">20</span></td><td> </td><td class="rblock"><span class="insert">     7.2.</span>  Header Field Registration  . . . . . . . . . . . . . . . . <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
123      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   8.</span>  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">21</span></td><td> </td><td class="rblock"><span class="insert">   8.</span>  Security Considerations  . . . . . . . . . . . . . . . . . . . <span class="insert">22</span></td><td class="lineno" valign="top"></td></tr>
124      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   9.</span>  References . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">21</span></td><td> </td><td class="rblock"><span class="insert">   9.</span>  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">22</span></td><td class="lineno" valign="top"></td></tr>
125      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     9.1.</span>  Normative References . . . . . . . . . . . . . . . . . . . <span class="delete">21</span></td><td> </td><td class="rblock"><span class="insert">   10.</span> References . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
126      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     9.2.</span>  Informative References . . . . . . . . . . . . . . . . . . <span class="delete">22</span></td><td> </td><td class="rblock"><span class="insert">     10.1.</span> Normative References . . . . . . . . . . . . . . . . . . . <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
127      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix A.  Changes from RFC 2616 . . . . . . . . . . . . . . . . <span class="delete">22</span></td><td> </td><td class="rblock"><span class="insert">     10.2.</span> Informative References . . . . . . . . . . . . . . . . . . <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
128      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix B.  Imported ABNF . . . . . . . . . . . . . . . . . . . . <span class="delete">22</span></td><td> </td><td class="rblock">   Appendix A.  Changes from RFC 2616 . . . . . . . . . . . . . . . . <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
129      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix C.  Collected ABNF  . . . . . . . . . . . . . . . . . . . <span class="delete">23</span></td><td> </td><td class="rblock">   Appendix B.  Imported ABNF . . . . . . . . . . . . . . . . . . . . <span class="insert">24</span></td><td class="lineno" valign="top"></td></tr>
130      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   Appendix C.  Collected ABNF  . . . . . . . . . . . . . . . . . . . <span class="insert">24</span></td><td class="lineno" valign="top"></td></tr>
131      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix D.  Change Log (to be removed by RFC Editor before</td><td> </td><td class="right">   Appendix D.  Change Log (to be removed by RFC Editor before</td><td class="lineno" valign="top"></td></tr>
132      <tr><td><a name="diff0006" /></td></tr>
133      <tr><td class="lineno" valign="top"></td><td class="lblock">                publication)  . . . . . . . . . . . . . . . . . . . . <span class="delete">23</span></td><td> </td><td class="rblock">                publication)  . . . . . . . . . . . . . . . . . . . . <span class="insert">25</span></td><td class="lineno" valign="top"></td></tr>
134      <tr><td class="lineno" valign="top"></td><td class="lblock">     D.1.  Since draft-ietf-httpbis-p4-conditional-19 . . . . . . . . <span class="delete">23</span></td><td> </td><td class="rblock">     D.1.  Since draft-ietf-httpbis-p4-conditional-19 . . . . . . . . <span class="insert">25</span></td><td class="lineno" valign="top"></td></tr>
135      <tr><td class="lineno" valign="top"></td><td class="lblock">     D.2.  Since draft-ietf-httpbis-p4-conditional-20 . . . . . . . . <span class="delete">24</span></td><td> </td><td class="rblock">     D.2.  Since draft-ietf-httpbis-p4-conditional-20 . . . . . . . . <span class="insert">26</span></td><td class="lineno" valign="top"></td></tr>
136      <tr><td class="lineno" valign="top"></td><td class="lblock">     D.3.  Since draft-ietf-httpbis-p4-conditional-21 . . . . . . . . <span class="delete">24</span></td><td> </td><td class="rblock">     D.3.  Since draft-ietf-httpbis-p4-conditional-21 . . . . . . . . <span class="insert">26</span></td><td class="lineno" valign="top"></td></tr>
137      <tr><td class="lineno" valign="top"></td><td class="lblock">     D.4.  Since draft-ietf-httpbis-p4-conditional-22 . . . . . . . . <span class="delete">25</span></td><td> </td><td class="rblock">     D.4.  Since draft-ietf-httpbis-p4-conditional-22 . . . . . . . . <span class="insert">26</span></td><td class="lineno" valign="top"></td></tr>
138      <tr><td class="lineno" valign="top"></td><td class="lblock">   Index  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">25</span></td><td> </td><td class="rblock"><span class="insert">     D.5.  Since draft-ietf-httpbis-p4-conditional-23 . . . . . . . . 27</span></td><td class="lineno" valign="top"></td></tr>
139      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   Index  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">27</span></td><td class="lineno" valign="top"></td></tr>
140      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
141      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
142      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
143      <tr><td class="lineno" valign="top"></td><td class="left">   Conditional requests are HTTP requests [Part2] that include one or</td><td> </td><td class="right">   Conditional requests are HTTP requests [Part2] that include one or</td><td class="lineno" valign="top"></td></tr>
144      <tr><td class="lineno" valign="top"></td><td class="left">   more header fields indicating a precondition to be tested before</td><td> </td><td class="right">   more header fields indicating a precondition to be tested before</td><td class="lineno" valign="top"></td></tr>
145      <tr><td class="lineno" valign="top"></td><td class="left">   applying the method semantics to the target resource.  This document</td><td> </td><td class="right">   applying the method semantics to the target resource.  This document</td><td class="lineno" valign="top"></td></tr>
146      <tr><td class="lineno" valign="top"></td><td class="left">   defines the HTTP/1.1 conditional request mechanisms in terms of the</td><td> </td><td class="right">   defines the HTTP/1.1 conditional request mechanisms in terms of the</td><td class="lineno" valign="top"></td></tr>
147      <tr><td class="lineno" valign="top"></td><td class="left">   architecture, syntax notation, and conformance criteria defined in</td><td> </td><td class="right">   architecture, syntax notation, and conformance criteria defined in</td><td class="lineno" valign="top"></td></tr>
148      <tr><td class="lineno" valign="top"></td><td class="left">   [Part1].</td><td> </td><td class="right">   [Part1].</td><td class="lineno" valign="top"></td></tr>
149      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
150      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
151      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 4, line 33</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 4, line 33</em></th><td></td></tr>
152      <tr><td class="lineno" valign="top"></td><td class="left">   set).  A resource might have multiple current representations, each</td><td> </td><td class="right">   set).  A resource might have multiple current representations, each</td><td class="lineno" valign="top"></td></tr>
153      <tr><td class="lineno" valign="top"></td><td class="left">   with its own observable state.  The conditional request mechanisms</td><td> </td><td class="right">   with its own observable state.  The conditional request mechanisms</td><td class="lineno" valign="top"></td></tr>
154      <tr><td class="lineno" valign="top"></td><td class="left">   assume that the mapping of requests to a "selected representation"</td><td> </td><td class="right">   assume that the mapping of requests to a "selected representation"</td><td class="lineno" valign="top"></td></tr>
155      <tr><td class="lineno" valign="top"></td><td class="left">   (Section 3 of [Part2]) will be consistent over time if the server</td><td> </td><td class="right">   (Section 3 of [Part2]) will be consistent over time if the server</td><td class="lineno" valign="top"></td></tr>
156      <tr><td class="lineno" valign="top"></td><td class="left">   intends to take advantage of conditionals.  Regardless, if the</td><td> </td><td class="right">   intends to take advantage of conditionals.  Regardless, if the</td><td class="lineno" valign="top"></td></tr>
157      <tr><td class="lineno" valign="top"></td><td class="left">   mapping is inconsistent and the server is unable to select the</td><td> </td><td class="right">   mapping is inconsistent and the server is unable to select the</td><td class="lineno" valign="top"></td></tr>
158      <tr><td class="lineno" valign="top"></td><td class="left">   appropriate representation, then no harm will result when the</td><td> </td><td class="right">   appropriate representation, then no harm will result when the</td><td class="lineno" valign="top"></td></tr>
159      <tr><td class="lineno" valign="top"></td><td class="left">   precondition evaluates to false.</td><td> </td><td class="right">   precondition evaluates to false.</td><td class="lineno" valign="top"></td></tr>
160      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
161      <tr><td class="lineno" valign="top"></td><td class="left">   The conditional request preconditions defined by this specification</td><td> </td><td class="right">   The conditional request preconditions defined by this specification</td><td class="lineno" valign="top"></td></tr>
162      <tr><td><a name="diff0007" /></td></tr>
163      <tr><td class="lineno" valign="top"></td><td class="lblock">   are evaluated <span class="delete">by comparing the validators provided in the conditional</span></td><td> </td><td class="rblock">   <span class="insert">(Section 3)</span> are evaluated <span class="insert">when applicable</span> to the <span class="insert">recipient</span></td><td class="lineno" valign="top"></td></tr>
164      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   request header fields</span> to the <span class="delete">current validators for the selected</span></td><td> </td><td class="rblock"><span class="insert">   (Section 5) according to their</span> order <span class="insert">of precedence (Section 6).</span></td><td class="lineno" valign="top"></td></tr>
165      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   representation in the</span> order <span class="delete">defined by Section 5.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
166      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
167      <tr><td class="lineno" valign="top"></td><td class="left">1.1.  Conformance and Error Handling</td><td> </td><td class="right">1.1.  Conformance and Error Handling</td><td class="lineno" valign="top"></td></tr>
168      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
169      <tr><td class="lineno" valign="top"></td><td class="left">   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",</td><td> </td><td class="right">   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",</td><td class="lineno" valign="top"></td></tr>
170      <tr><td class="lineno" valign="top"></td><td class="left">   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this</td><td> </td><td class="right">   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this</td><td class="lineno" valign="top"></td></tr>
171      <tr><td class="lineno" valign="top"></td><td class="left">   document are to be interpreted as described in [RFC2119].</td><td> </td><td class="right">   document are to be interpreted as described in [RFC2119].</td><td class="lineno" valign="top"></td></tr>
172      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
173      <tr><td class="lineno" valign="top"></td><td class="left">   Conformance criteria and considerations regarding error handling are</td><td> </td><td class="right">   Conformance criteria and considerations regarding error handling are</td><td class="lineno" valign="top"></td></tr>
174      <tr><td class="lineno" valign="top"></td><td class="left">   defined in Section 2.5 of [Part1].</td><td> </td><td class="right">   defined in Section 2.5 of [Part1].</td><td class="lineno" valign="top"></td></tr>
175      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
176      <tr><td class="lineno" valign="top"></td><td class="left">1.2.  Syntax Notation</td><td> </td><td class="right">1.2.  Syntax Notation</td><td class="lineno" valign="top"></td></tr>
177      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
178      <tr><td class="lineno" valign="top"></td><td class="left">   This specification uses the Augmented Backus-Naur Form (ABNF)</td><td> </td><td class="right">   This specification uses the Augmented Backus-Naur Form (ABNF)</td><td class="lineno" valign="top"></td></tr>
179      <tr><td class="lineno" valign="top"></td><td class="left">   notation of [RFC5234] with the list rule extension defined in Section</td><td> </td><td class="right">   notation of [RFC5234] with the list rule extension defined in Section</td><td class="lineno" valign="top"></td></tr>
180      <tr><td><a name="diff0008" /></td></tr>
181      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">1.2</span> of [Part1].  Appendix B describes rules imported from other</td><td> </td><td class="rblock">   <span class="insert">7</span> of [Part1].  Appendix B describes rules imported from other</td><td class="lineno" valign="top"></td></tr>
182      <tr><td class="lineno" valign="top"></td><td class="left">   documents.  Appendix C shows the collected ABNF with the list rule</td><td> </td><td class="right">   documents.  Appendix C shows the collected ABNF with the list rule</td><td class="lineno" valign="top"></td></tr>
183      <tr><td class="lineno" valign="top"></td><td class="left">   expanded.</td><td> </td><td class="right">   expanded.</td><td class="lineno" valign="top"></td></tr>
184      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
185      <tr><td class="lineno" valign="top"></td><td class="left">2.  Validators</td><td> </td><td class="right">2.  Validators</td><td class="lineno" valign="top"></td></tr>
186      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
187      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines two forms of metadata that are commonly</td><td> </td><td class="right">   This specification defines two forms of metadata that are commonly</td><td class="lineno" valign="top"></td></tr>
188      <tr><td class="lineno" valign="top"></td><td class="left">   used to observe resource state and test for preconditions:</td><td> </td><td class="right">   used to observe resource state and test for preconditions:</td><td class="lineno" valign="top"></td></tr>
189      <tr><td class="lineno" valign="top"></td><td class="left">   modification dates (Section 2.2) and opaque entity tags</td><td> </td><td class="right">   modification dates (Section 2.2) and opaque entity tags</td><td class="lineno" valign="top"></td></tr>
190      <tr><td class="lineno" valign="top"></td><td class="left">   (Section 2.3).  Additional metadata that reflects resource state has</td><td> </td><td class="right">   (Section 2.3).  Additional metadata that reflects resource state has</td><td class="lineno" valign="top"></td></tr>
191      <tr><td class="lineno" valign="top"></td><td class="left">   been defined by various extensions of HTTP, such as WebDAV [RFC4918],</td><td> </td><td class="right">   been defined by various extensions of HTTP, such as WebDAV [RFC4918],</td><td class="lineno" valign="top"></td></tr>
192      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
193      <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 6, line 12</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 6, line 12</em></th><td></td></tr>
194      <tr><td class="lineno" valign="top"></td><td class="left">   are based on strict revision control, wherein each change to a</td><td> </td><td class="right">   are based on strict revision control, wherein each change to a</td><td class="lineno" valign="top"></td></tr>
195      <tr><td class="lineno" valign="top"></td><td class="left">   representation always results in a unique node name and revision</td><td> </td><td class="right">   representation always results in a unique node name and revision</td><td class="lineno" valign="top"></td></tr>
196      <tr><td class="lineno" valign="top"></td><td class="left">   identifier being assigned before the representation is made</td><td> </td><td class="right">   identifier being assigned before the representation is made</td><td class="lineno" valign="top"></td></tr>
197      <tr><td class="lineno" valign="top"></td><td class="left">   accessible to GET.  A collision-resistant hash function applied to</td><td> </td><td class="right">   accessible to GET.  A collision-resistant hash function applied to</td><td class="lineno" valign="top"></td></tr>
198      <tr><td class="lineno" valign="top"></td><td class="left">   the representation data is also sufficient if the data is available</td><td> </td><td class="right">   the representation data is also sufficient if the data is available</td><td class="lineno" valign="top"></td></tr>
199      <tr><td class="lineno" valign="top"></td><td class="left">   prior to the response header fields being sent and the digest does</td><td> </td><td class="right">   prior to the response header fields being sent and the digest does</td><td class="lineno" valign="top"></td></tr>
200      <tr><td class="lineno" valign="top"></td><td class="left">   not need to be recalculated every time a validation request is</td><td> </td><td class="right">   not need to be recalculated every time a validation request is</td><td class="lineno" valign="top"></td></tr>
201      <tr><td class="lineno" valign="top"></td><td class="left">   received.  However, if a resource has distinct representations that</td><td> </td><td class="right">   received.  However, if a resource has distinct representations that</td><td class="lineno" valign="top"></td></tr>
202      <tr><td class="lineno" valign="top"></td><td class="left">   differ only in their metadata, such as might occur with content</td><td> </td><td class="right">   differ only in their metadata, such as might occur with content</td><td class="lineno" valign="top"></td></tr>
203      <tr><td class="lineno" valign="top"></td><td class="left">   negotiation over media types that happen to share the same data</td><td> </td><td class="right">   negotiation over media types that happen to share the same data</td><td class="lineno" valign="top"></td></tr>
204      <tr><td><a name="diff0009" /></td></tr>
205      <tr><td class="lineno" valign="top"></td><td class="lblock">   format, then the origin server <span class="delete">SHOULD</span> incorporate additional</td><td> </td><td class="rblock">   format, then the origin server <span class="insert">needs to</span> incorporate additional</td><td class="lineno" valign="top"></td></tr>
206      <tr><td class="lineno" valign="top"></td><td class="left">   information in the validator to distinguish those representations.</td><td> </td><td class="right">   information in the validator to distinguish those representations.</td><td class="lineno" valign="top"></td></tr>
207      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
208      <tr><td class="lineno" valign="top"></td><td class="left">   In contrast, a "weak validator" is representation metadata that might</td><td> </td><td class="right">   In contrast, a "weak validator" is representation metadata that might</td><td class="lineno" valign="top"></td></tr>
209      <tr><td class="lineno" valign="top"></td><td class="left">   not change for every change to the representation data.  This</td><td> </td><td class="right">   not change for every change to the representation data.  This</td><td class="lineno" valign="top"></td></tr>
210      <tr><td class="lineno" valign="top"></td><td class="left">   weakness might be due to limitations in how the value is calculated,</td><td> </td><td class="right">   weakness might be due to limitations in how the value is calculated,</td><td class="lineno" valign="top"></td></tr>
211      <tr><td class="lineno" valign="top"></td><td class="left">   such as clock resolution or an inability to ensure uniqueness for all</td><td> </td><td class="right">   such as clock resolution or an inability to ensure uniqueness for all</td><td class="lineno" valign="top"></td></tr>
212      <tr><td class="lineno" valign="top"></td><td class="left">   possible representations of the resource, or due to a desire by the</td><td> </td><td class="right">   possible representations of the resource, or due to a desire by the</td><td class="lineno" valign="top"></td></tr>
213      <tr><td class="lineno" valign="top"></td><td class="left">   resource owner to group representations by some self-determined set</td><td> </td><td class="right">   resource owner to group representations by some self-determined set</td><td class="lineno" valign="top"></td></tr>
214      <tr><td class="lineno" valign="top"></td><td class="left">   of equivalency rather than unique sequences of data.  An origin</td><td> </td><td class="right">   of equivalency rather than unique sequences of data.  An origin</td><td class="lineno" valign="top"></td></tr>
215      <tr><td class="lineno" valign="top"></td><td class="left">   server SHOULD change a weak entity-tag whenever it considers prior</td><td> </td><td class="right">   server SHOULD change a weak entity-tag whenever it considers prior</td><td class="lineno" valign="top"></td></tr>
216      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
217      <tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 6, line 48</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 6, line 48</em></th><td></td></tr>
218      <tr><td class="lineno" valign="top"></td><td class="left">   Likewise, a validator is weak if it is shared by two or more</td><td> </td><td class="right">   Likewise, a validator is weak if it is shared by two or more</td><td class="lineno" valign="top"></td></tr>
219      <tr><td class="lineno" valign="top"></td><td class="left">   representations of a given resource at the same time, unless those</td><td> </td><td class="right">   representations of a given resource at the same time, unless those</td><td class="lineno" valign="top"></td></tr>
220      <tr><td class="lineno" valign="top"></td><td class="left">   representations have identical representation data.  For example, if</td><td> </td><td class="right">   representations have identical representation data.  For example, if</td><td class="lineno" valign="top"></td></tr>
221      <tr><td class="lineno" valign="top"></td><td class="left">   the origin server sends the same validator for a representation with</td><td> </td><td class="right">   the origin server sends the same validator for a representation with</td><td class="lineno" valign="top"></td></tr>
222      <tr><td class="lineno" valign="top"></td><td class="left">   a gzip content coding applied as it does for a representation with no</td><td> </td><td class="right">   a gzip content coding applied as it does for a representation with no</td><td class="lineno" valign="top"></td></tr>
223      <tr><td class="lineno" valign="top"></td><td class="left">   content coding, then that validator is weak.  However, two</td><td> </td><td class="right">   content coding, then that validator is weak.  However, two</td><td class="lineno" valign="top"></td></tr>
224      <tr><td class="lineno" valign="top"></td><td class="left">   simultaneous representations might share the same strong validator if</td><td> </td><td class="right">   simultaneous representations might share the same strong validator if</td><td class="lineno" valign="top"></td></tr>
225      <tr><td class="lineno" valign="top"></td><td class="left">   they differ only in the representation metadata, such as when two</td><td> </td><td class="right">   they differ only in the representation metadata, such as when two</td><td class="lineno" valign="top"></td></tr>
226      <tr><td class="lineno" valign="top"></td><td class="left">   different media types are available for the same representation data.</td><td> </td><td class="right">   different media types are available for the same representation data.</td><td class="lineno" valign="top"></td></tr>
227      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
228      <tr><td><a name="diff0010" /></td></tr>
229      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A "use" of a validator occurs when either a client generates a</span></td><td> </td><td class="rblock">   Strong validators are usable for all conditional requests, including</td><td class="lineno" valign="top"></td></tr>
230      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   request and includes the validator in a precondition or when a server</span></td><td> </td><td class="rblock">   cache validation, partial content ranges, and "lost update"</td><td class="lineno" valign="top"></td></tr>
231      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   compares two validators.  Weak validators are only usable in contexts</span></td><td> </td><td class="rblock">   avoidance.  <span class="insert">Weak validators are only usable when the client does not</span></td><td class="lineno" valign="top"></td></tr>
232      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   that do not depend on exact equality of the representation data.</span></td><td> </td><td class="rblock"><span class="insert">   require exact equality with previously obtained representation data,</span></td><td class="lineno" valign="top"></td></tr>
233      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"><span class="insert">   such as when validating a cache entry or limiting a web traversal to</span></td><td class="lineno" valign="top"></td></tr>
234      <tr><td class="lineno" valign="top"></td><td class="lblock">   Strong validators are usable <span class="delete">and preferred</span> for all conditional</td><td> </td><td class="rblock"><span class="insert">   recent changes.</span></td><td class="lineno" valign="top"></td></tr>
235      <tr><td class="lineno" valign="top"></td><td class="lblock">   requests, including cache validation, partial content ranges, and</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
236      <tr><td class="lineno" valign="top"></td><td class="lblock">   "lost update" avoidance.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
237      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
238      <tr><td class="lineno" valign="top"></td><td class="left">2.2.  Last-Modified</td><td> </td><td class="right">2.2.  Last-Modified</td><td class="lineno" valign="top"></td></tr>
239      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
240      <tr><td class="lineno" valign="top"></td><td class="left">   The "Last-Modified" header field in a response provides a timestamp</td><td> </td><td class="right">   The "Last-Modified" header field in a response provides a timestamp</td><td class="lineno" valign="top"></td></tr>
241      <tr><td class="lineno" valign="top"></td><td class="left">   indicating the date and time at which the origin server believes the</td><td> </td><td class="right">   indicating the date and time at which the origin server believes the</td><td class="lineno" valign="top"></td></tr>
242      <tr><td class="lineno" valign="top"></td><td class="left">   selected representation was last modified, as determined at the</td><td> </td><td class="right">   selected representation was last modified, as determined at the</td><td class="lineno" valign="top"></td></tr>
243      <tr><td class="lineno" valign="top"></td><td class="left">   conclusion of handling the request.</td><td> </td><td class="right">   conclusion of handling the request.</td><td class="lineno" valign="top"></td></tr>
244      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
245      <tr><td class="lineno" valign="top"></td><td class="left">     Last-Modified = HTTP-date</td><td> </td><td class="right">     Last-Modified = HTTP-date</td><td class="lineno" valign="top"></td></tr>
246      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
247      <tr><td class="lineno" valign="top"></td><td class="left">   An example of its use is</td><td> </td><td class="right">   An example of its use is</td><td class="lineno" valign="top"></td></tr>
248      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
249      <tr><td class="lineno" valign="top"></td><td class="left">     Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT</td><td> </td><td class="right">     Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT</td><td class="lineno" valign="top"></td></tr>
250      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
251      <tr><td class="lineno" valign="top"></td><td class="left">2.2.1.  Generation</td><td> </td><td class="right">2.2.1.  Generation</td><td class="lineno" valign="top"></td></tr>
252      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
253      <tr><td><a name="diff0011" /></td></tr>
254      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Origin servers</span> SHOULD send Last-Modified for any selected</td><td> </td><td class="rblock">   <span class="insert">An origin server</span> SHOULD send Last-Modified for any selected</td><td class="lineno" valign="top"></td></tr>
255      <tr><td class="lineno" valign="top"></td><td class="left">   representation for which a last modification date can be reasonably</td><td> </td><td class="right">   representation for which a last modification date can be reasonably</td><td class="lineno" valign="top"></td></tr>
256      <tr><td class="lineno" valign="top"></td><td class="left">   and consistently determined, since its use in conditional requests</td><td> </td><td class="right">   and consistently determined, since its use in conditional requests</td><td class="lineno" valign="top"></td></tr>
257      <tr><td class="lineno" valign="top"></td><td class="left">   and evaluating cache freshness ([Part6]) results in a substantial</td><td> </td><td class="right">   and evaluating cache freshness ([Part6]) results in a substantial</td><td class="lineno" valign="top"></td></tr>
258      <tr><td class="lineno" valign="top"></td><td class="left">   reduction of HTTP traffic on the Internet and can be a significant</td><td> </td><td class="right">   reduction of HTTP traffic on the Internet and can be a significant</td><td class="lineno" valign="top"></td></tr>
259      <tr><td class="lineno" valign="top"></td><td class="left">   factor in improving service scalability and reliability.</td><td> </td><td class="right">   factor in improving service scalability and reliability.</td><td class="lineno" valign="top"></td></tr>
260      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
261      <tr><td class="lineno" valign="top"></td><td class="left">   A representation is typically the sum of many parts behind the</td><td> </td><td class="right">   A representation is typically the sum of many parts behind the</td><td class="lineno" valign="top"></td></tr>
262      <tr><td class="lineno" valign="top"></td><td class="left">   resource interface.  The last-modified time would usually be the most</td><td> </td><td class="right">   resource interface.  The last-modified time would usually be the most</td><td class="lineno" valign="top"></td></tr>
263      <tr><td class="lineno" valign="top"></td><td class="left">   recent time that any of those parts were changed.  How that value is</td><td> </td><td class="right">   recent time that any of those parts were changed.  How that value is</td><td class="lineno" valign="top"></td></tr>
264      <tr><td class="lineno" valign="top"></td><td class="left">   determined for any given resource is an implementation detail beyond</td><td> </td><td class="right">   determined for any given resource is an implementation detail beyond</td><td class="lineno" valign="top"></td></tr>
265      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
266      <tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 10, line 23</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 10, line 23</em></th><td></td></tr>
267      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
268      <tr><td class="lineno" valign="top"></td><td class="left">   For example, a resource that has implementation-specific versioning</td><td> </td><td class="right">   For example, a resource that has implementation-specific versioning</td><td class="lineno" valign="top"></td></tr>
269      <tr><td class="lineno" valign="top"></td><td class="left">   applied to all changes might use an internal revision number, perhaps</td><td> </td><td class="right">   applied to all changes might use an internal revision number, perhaps</td><td class="lineno" valign="top"></td></tr>
270      <tr><td class="lineno" valign="top"></td><td class="left">   combined with a variance identifier for content negotiation, to</td><td> </td><td class="right">   combined with a variance identifier for content negotiation, to</td><td class="lineno" valign="top"></td></tr>
271      <tr><td class="lineno" valign="top"></td><td class="left">   accurately differentiate between representations.  Other</td><td> </td><td class="right">   accurately differentiate between representations.  Other</td><td class="lineno" valign="top"></td></tr>
272      <tr><td class="lineno" valign="top"></td><td class="left">   implementations might use a collision-resistant hash of</td><td> </td><td class="right">   implementations might use a collision-resistant hash of</td><td class="lineno" valign="top"></td></tr>
273      <tr><td class="lineno" valign="top"></td><td class="left">   representation content, a combination of various filesystem</td><td> </td><td class="right">   representation content, a combination of various filesystem</td><td class="lineno" valign="top"></td></tr>
274      <tr><td class="lineno" valign="top"></td><td class="left">   attributes, or a modification timestamp that has sub-second</td><td> </td><td class="right">   attributes, or a modification timestamp that has sub-second</td><td class="lineno" valign="top"></td></tr>
275      <tr><td class="lineno" valign="top"></td><td class="left">   resolution.</td><td> </td><td class="right">   resolution.</td><td class="lineno" valign="top"></td></tr>
276      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
277      <tr><td><a name="diff0012" /></td></tr>
278      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Origin servers</span> SHOULD send ETag for any selected representation for</td><td> </td><td class="rblock">   <span class="insert">An origin server</span> SHOULD send ETag for any selected representation for</td><td class="lineno" valign="top"></td></tr>
279      <tr><td class="lineno" valign="top"></td><td class="left">   which detection of changes can be reasonably and consistently</td><td> </td><td class="right">   which detection of changes can be reasonably and consistently</td><td class="lineno" valign="top"></td></tr>
280      <tr><td class="lineno" valign="top"></td><td class="left">   determined, since the entity-tag's use in conditional requests and</td><td> </td><td class="right">   determined, since the entity-tag's use in conditional requests and</td><td class="lineno" valign="top"></td></tr>
281      <tr><td class="lineno" valign="top"></td><td class="left">   evaluating cache freshness ([Part6]) can result in a substantial</td><td> </td><td class="right">   evaluating cache freshness ([Part6]) can result in a substantial</td><td class="lineno" valign="top"></td></tr>
282      <tr><td class="lineno" valign="top"></td><td class="left">   reduction of HTTP network traffic and can be a significant factor in</td><td> </td><td class="right">   reduction of HTTP network traffic and can be a significant factor in</td><td class="lineno" valign="top"></td></tr>
283      <tr><td class="lineno" valign="top"></td><td class="left">   improving service scalability and reliability.</td><td> </td><td class="right">   improving service scalability and reliability.</td><td class="lineno" valign="top"></td></tr>
284      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
285      <tr><td class="lineno" valign="top"></td><td class="left">2.3.2.  Comparison</td><td> </td><td class="right">2.3.2.  Comparison</td><td class="lineno" valign="top"></td></tr>
286      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
287      <tr><td class="lineno" valign="top"></td><td class="left">   There are two entity-tag comparison functions, depending on whether</td><td> </td><td class="right">   There are two entity-tag comparison functions, depending on whether</td><td class="lineno" valign="top"></td></tr>
288      <tr><td class="lineno" valign="top"></td><td class="left">   the comparison context allows the use of weak validators or not:</td><td> </td><td class="right">   the comparison context allows the use of weak validators or not:</td><td class="lineno" valign="top"></td></tr>
289      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
290      <tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 12, line 35</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 12, line 35</em></th><td></td></tr>
291      <tr><td class="lineno" valign="top"></td><td class="left">      if it is unfeasible to send a strong entity-tag.</td><td> </td><td class="right">      if it is unfeasible to send a strong entity-tag.</td><td class="lineno" valign="top"></td></tr>
292      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
293      <tr><td class="lineno" valign="top"></td><td class="left">   o  SHOULD send a Last-Modified value if it is feasible to send one.</td><td> </td><td class="right">   o  SHOULD send a Last-Modified value if it is feasible to send one.</td><td class="lineno" valign="top"></td></tr>
294      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
295      <tr><td class="lineno" valign="top"></td><td class="left">   In other words, the preferred behavior for an origin server is to</td><td> </td><td class="right">   In other words, the preferred behavior for an origin server is to</td><td class="lineno" valign="top"></td></tr>
296      <tr><td class="lineno" valign="top"></td><td class="left">   send both a strong entity-tag and a Last-Modified value in successful</td><td> </td><td class="right">   send both a strong entity-tag and a Last-Modified value in successful</td><td class="lineno" valign="top"></td></tr>
297      <tr><td class="lineno" valign="top"></td><td class="left">   responses to a retrieval request.</td><td> </td><td class="right">   responses to a retrieval request.</td><td class="lineno" valign="top"></td></tr>
298      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
299      <tr><td class="lineno" valign="top"></td><td class="left">   A client:</td><td> </td><td class="right">   A client:</td><td class="lineno" valign="top"></td></tr>
300      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
301      <tr><td><a name="diff0013" /></td></tr>
302      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  MUST <span class="delete">use that entity-tag in any cache-conditional</span> request (using</td><td> </td><td class="rblock">   o  MUST <span class="insert">send that entity-tag in any cache validation</span> request (using</td><td class="lineno" valign="top"></td></tr>
303      <tr><td class="lineno" valign="top"></td><td class="left">      If-Match or If-None-Match) if an entity-tag has been provided by</td><td> </td><td class="right">      If-Match or If-None-Match) if an entity-tag has been provided by</td><td class="lineno" valign="top"></td></tr>
304      <tr><td class="lineno" valign="top"></td><td class="left">      the origin server.</td><td> </td><td class="right">      the origin server.</td><td class="lineno" valign="top"></td></tr>
305      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
306      <tr><td><a name="diff0014" /></td></tr>
307      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  SHOULD <span class="delete">use</span> the Last-Modified value in non-subrange <span class="delete">cache-</span></td><td> </td><td class="rblock">   o  SHOULD <span class="insert">send</span> the Last-Modified value in non-subrange <span class="insert">cache</span></td><td class="lineno" valign="top"></td></tr>
308      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      conditional</span> requests (using If-Modified-Since) if only a Last-</td><td> </td><td class="rblock"><span class="insert">      validation</span> requests (using If-Modified-Since) if only a Last-</td><td class="lineno" valign="top"></td></tr>
309      <tr><td class="lineno" valign="top"></td><td class="left">      Modified value has been provided by the origin server.</td><td> </td><td class="right">      Modified value has been provided by the origin server.</td><td class="lineno" valign="top"></td></tr>
310      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
311      <tr><td><a name="diff0015" /></td></tr>
312      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  MAY <span class="delete">use the Last-Modified value in subrange cache-conditional</span></td><td> </td><td class="rblock">   o  MAY <span class="insert">send the Last-Modified value in subrange cache validation</span></td><td class="lineno" valign="top"></td></tr>
313      <tr><td class="lineno" valign="top"></td><td class="left">      requests (using If-Unmodified-Since) if only a Last-Modified value</td><td> </td><td class="right">      requests (using If-Unmodified-Since) if only a Last-Modified value</td><td class="lineno" valign="top"></td></tr>
314      <tr><td class="lineno" valign="top"></td><td class="left">      has been provided by an HTTP/1.0 origin server.  The user agent</td><td> </td><td class="right">      has been provided by an HTTP/1.0 origin server.  The user agent</td><td class="lineno" valign="top"></td></tr>
315      <tr><td class="lineno" valign="top"></td><td class="left">      SHOULD provide a way to disable this, in case of difficulty.</td><td> </td><td class="right">      SHOULD provide a way to disable this, in case of difficulty.</td><td class="lineno" valign="top"></td></tr>
316      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
317      <tr><td><a name="diff0016" /></td></tr>
318      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  SHOULD <span class="delete">use both validators in cache-conditional</span> requests if both</td><td> </td><td class="rblock">   o  SHOULD <span class="insert">send both validators in cache validation</span> requests if both</td><td class="lineno" valign="top"></td></tr>
319      <tr><td class="lineno" valign="top"></td><td class="left">      an entity-tag and a Last-Modified value have been provided by the</td><td> </td><td class="right">      an entity-tag and a Last-Modified value have been provided by the</td><td class="lineno" valign="top"></td></tr>
320      <tr><td class="lineno" valign="top"></td><td class="left">      origin server.  This allows both HTTP/1.0 and HTTP/1.1 caches to</td><td> </td><td class="right">      origin server.  This allows both HTTP/1.0 and HTTP/1.1 caches to</td><td class="lineno" valign="top"></td></tr>
321      <tr><td class="lineno" valign="top"></td><td class="left">      respond appropriately.</td><td> </td><td class="right">      respond appropriately.</td><td class="lineno" valign="top"></td></tr>
322      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
323      <tr><td class="lineno" valign="top"></td><td class="left">3.  Precondition Header Fields</td><td> </td><td class="right">3.  Precondition Header Fields</td><td class="lineno" valign="top"></td></tr>
324      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
325      <tr><td class="lineno" valign="top"></td><td class="left">   This section defines the syntax and semantics of HTTP/1.1 header</td><td> </td><td class="right">   This section defines the syntax and semantics of HTTP/1.1 header</td><td class="lineno" valign="top"></td></tr>
326      <tr><td class="lineno" valign="top"></td><td class="left">   fields for applying preconditions on requests.  Section 5 defines</td><td> </td><td class="right">   fields for applying preconditions on requests.  Section 5 defines</td><td class="lineno" valign="top"></td></tr>
327      <tr><td><a name="diff0017" /></td></tr>
328      <tr><td class="lineno" valign="top"></td><td class="lblock">   when the preconditions are <span class="delete">applied and</span> the order of evaluation when</td><td> </td><td class="rblock">   when the preconditions are <span class="insert">applied.  Section 6 defines</span> the order of</td><td class="lineno" valign="top"></td></tr>
329      <tr><td class="lineno" valign="top"></td><td class="lblock">   more than one precondition is present.</td><td> </td><td class="rblock">   evaluation when more than one precondition is present.</td><td class="lineno" valign="top"></td></tr>
330      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
331      <tr><td class="lineno" valign="top"></td><td class="left">3.1.  If-Match</td><td> </td><td class="right">3.1.  If-Match</td><td class="lineno" valign="top"></td></tr>
332      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
333      <tr><td><a name="diff0018" /></td></tr>
334      <tr><td class="lineno" valign="top"></td><td class="lblock">   The "If-Match" header field <span class="delete">can be used to make a</span> request method</td><td> </td><td class="rblock">   The "If-Match" header field <span class="insert">makes the</span> request method conditional on</td><td class="lineno" valign="top"></td></tr>
335      <tr><td class="lineno" valign="top"></td><td class="lblock">   conditional on the current <span class="delete">existence</span> or <span class="delete">value</span> of an entity-tag <span class="delete">for</span></td><td> </td><td class="rblock">   the <span class="insert">recipient origin server either having at least one</span> current</td><td class="lineno" valign="top"></td></tr>
336      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   one or more representations</span> of the <span class="delete">target resource.</span></td><td> </td><td class="rblock">   <span class="insert">representation of the target resource, when the field-value is "*",</span></td><td class="lineno" valign="top"></td></tr>
337      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   or <span class="insert">having a current representation</span> of <span class="insert">the target resource that has</span> an</td><td class="lineno" valign="top"></td></tr>
338      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   entity-tag <span class="insert">matching a member</span> of the <span class="insert">list of entity-tags provided in</span></td><td class="lineno" valign="top"></td></tr>
339      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the field-value.</span></td><td class="lineno" valign="top"></td></tr>
340      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
341      <tr><td><a name="diff0019" /></td></tr>
342      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">If-Match is generally useful for resource update requests, such as</span></td><td> </td><td class="rblock">   An <span class="insert">origin server MUST use the strong comparison function when</span></td><td class="lineno" valign="top"></td></tr>
343      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   PUT requests, as a means for protecting against accidental overwrites</span></td><td> </td><td class="rblock"><span class="insert">   comparing entity-tags for</span> If-Match <span class="insert">(Section 2.3.2), since</span> the <span class="insert">client</span></td><td class="lineno" valign="top"></td></tr>
344      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   when multiple clients are acting in parallel on the same resource</span></td><td> </td><td class="rblock"><span class="insert">   intends this</span> precondition <span class="insert">to prevent</span> the <span class="insert">method from being applied if</span></td><td class="lineno" valign="top"></td></tr>
345      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   (i.e., the "lost update" problem).</span>  An If-Match <span class="delete">field-value of "*"</span></td><td> </td><td class="rblock"><span class="insert">   there have been</span> any <span class="insert">changes to</span> the <span class="insert">representation data.</span></td><td class="lineno" valign="top"></td></tr>
346      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   places</span> the precondition <span class="delete">on</span> the <span class="delete">existence of</span> any <span class="delete">current</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
347      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   representation for</span> the <span class="delete">target resource.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
348      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
349      <tr><td class="lineno" valign="top"></td><td class="left">     If-Match = "*" / 1#entity-tag</td><td> </td><td class="right">     If-Match = "*" / 1#entity-tag</td><td class="lineno" valign="top"></td></tr>
350      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
351      <tr><td><a name="diff0020" /></td></tr>
352      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The If-Match condition is met if and only if any of the entity-tags</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
353      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   listed in the If-Match field value match the entity-tag of the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
354      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   selected representation using the weak comparison function (as per</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
355      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Section 2.3.2), or if "*" is given and any current representation</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
356      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   exists for the target resource.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
357      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
358      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If the condition is met, the server MAY perform the request method.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
359      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
360      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Origin servers MUST NOT perform the requested method if the condition</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
361      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   is not met; instead they MUST respond with the 412 (Precondition</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
362      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Failed) status code.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
363      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
364      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Proxy servers using a cached response as the selected representation</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
365      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   MUST NOT perform the requested method if the condition is not met;</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
366      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   instead, they MUST forward the request towards the origin server.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
367      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
368      <tr><td class="lineno" valign="top"></td><td class="left">   Examples:</td><td> </td><td class="right">   Examples:</td><td class="lineno" valign="top"></td></tr>
369      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
370      <tr><td class="lineno" valign="top"></td><td class="left">     If-Match: "xyzzy"</td><td> </td><td class="right">     If-Match: "xyzzy"</td><td class="lineno" valign="top"></td></tr>
371      <tr><td class="lineno" valign="top"></td><td class="left">     If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"</td><td> </td><td class="right">     If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"</td><td class="lineno" valign="top"></td></tr>
372      <tr><td class="lineno" valign="top"></td><td class="left">     If-Match: *</td><td> </td><td class="right">     If-Match: *</td><td class="lineno" valign="top"></td></tr>
373      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
374      <tr><td><a name="diff0021" /></td></tr>
375      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">If-Match is most often used with state-changing methods (e.g., POST,</span></td><td class="lineno" valign="top"></td></tr>
376      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   PUT, DELETE) to prevent accidental overwrites when multiple user</span></td><td class="lineno" valign="top"></td></tr>
377      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   agents might be acting in parallel on the same resource (i.e., to</span></td><td class="lineno" valign="top"></td></tr>
378      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   prevent the "lost update" problem).  It can also be used with safe</span></td><td class="lineno" valign="top"></td></tr>
379      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   methods to abort a request if the selected representation does not</span></td><td class="lineno" valign="top"></td></tr>
380      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   match one already stored (or partially stored) from a prior request.</span></td><td class="lineno" valign="top"></td></tr>
381      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
382      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   An origin server that receives an If-Match header field MUST evaluate</span></td><td class="lineno" valign="top"></td></tr>
383      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the condition prior to performing the method (Section 5).  If the</span></td><td class="lineno" valign="top"></td></tr>
384      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   field-value is "*", the condition is false if the origin server does</span></td><td class="lineno" valign="top"></td></tr>
385      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   not have a current representation for the target resource.  If the</span></td><td class="lineno" valign="top"></td></tr>
386      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   field-value is a list of entity-tags, the condition is false if none</span></td><td class="lineno" valign="top"></td></tr>
387      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   of the listed tags match the entity-tag of the selected</span></td><td class="lineno" valign="top"></td></tr>
388      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   representation.</span></td><td class="lineno" valign="top"></td></tr>
389      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
390      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   An origin server MUST NOT perform the requested method if a received</span></td><td class="lineno" valign="top"></td></tr>
391      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   If-Match condition evaluates to false; instead the origin server MUST</span></td><td class="lineno" valign="top"></td></tr>
392      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   respond with either: a) the 412 (Precondition Failed) status code;</span></td><td class="lineno" valign="top"></td></tr>
393      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   or, b) one of the 2xx (Successful) status codes if the origin server</span></td><td class="lineno" valign="top"></td></tr>
394      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   has verified that a state change is being requested and the final</span></td><td class="lineno" valign="top"></td></tr>
395      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   state is already reflected in the current state of the target</span></td><td class="lineno" valign="top"></td></tr>
396      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   resource (i.e., the change requested by the user agent has already</span></td><td class="lineno" valign="top"></td></tr>
397      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   succeeded, but the user agent might not be aware of it, perhaps</span></td><td class="lineno" valign="top"></td></tr>
398      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   because the prior response was lost or a compatible change was made</span></td><td class="lineno" valign="top"></td></tr>
399      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   by some other user agent).  In the latter case, the origin server</span></td><td class="lineno" valign="top"></td></tr>
400      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   MUST NOT send a validator header field in the response unless it can</span></td><td class="lineno" valign="top"></td></tr>
401      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   verify that the request is a duplicate of an immediately prior change</span></td><td class="lineno" valign="top"></td></tr>
402      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   made by the same user agent.</span></td><td class="lineno" valign="top"></td></tr>
403      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
404      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The If-Match header field can be ignored by caches and intermediaries</span></td><td class="lineno" valign="top"></td></tr>
405      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   because it is not applicable to a stored response.</span></td><td class="lineno" valign="top"></td></tr>
406      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
407      <tr><td class="lineno" valign="top"></td><td class="left">3.2.  If-None-Match</td><td> </td><td class="right">3.2.  If-None-Match</td><td class="lineno" valign="top"></td></tr>
408      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
409      <tr><td><a name="diff0022" /></td></tr>
410      <tr><td class="lineno" valign="top"></td><td class="lblock">   The "If-None-Match" header field <span class="delete">can be used to make a</span> request method</td><td> </td><td class="rblock">   The "If-None-Match" header field <span class="insert">makes the</span> request method conditional</td><td class="lineno" valign="top"></td></tr>
411      <tr><td class="lineno" valign="top"></td><td class="lblock">   conditional on not <span class="delete">matching</span> any of the <span class="delete">current</span> entity-tag <span class="delete">values for</span></td><td> </td><td class="rblock">   on <span class="insert">a recipient cache or origin server either</span> not <span class="insert">having</span> any <span class="insert">current</span></td><td class="lineno" valign="top"></td></tr>
412      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   representations</span> of the <span class="delete">target resource.</span></td><td> </td><td class="rblock"><span class="insert">   representation</span> of the <span class="insert">target resource, when the field-value is "*",</span></td><td class="lineno" valign="top"></td></tr>
413      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   or having a selected representation with an</span> entity-tag <span class="insert">that does not</span></td><td class="lineno" valign="top"></td></tr>
414      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   match any</span> of <span class="insert">those listed in</span> the <span class="insert">field-value.</span></td><td class="lineno" valign="top"></td></tr>
415      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
416      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   A recipient MUST use the weak comparison function when comparing</span></td><td class="lineno" valign="top"></td></tr>
417      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   entity-tags for If-None-Match (Section 2.3.2), since weak entity-tags</span></td><td class="lineno" valign="top"></td></tr>
418      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   can be used for cache validation even if there have been changes to</span></td><td class="lineno" valign="top"></td></tr>
419      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the representation data.</span></td><td class="lineno" valign="top"></td></tr>
420      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
421      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     If-None-Match = "*" / 1#entity-tag</span></td><td class="lineno" valign="top"></td></tr>
422      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
423      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Examples:</span></td><td class="lineno" valign="top"></td></tr>
424      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
425      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     If-None-Match: "xyzzy"</span></td><td class="lineno" valign="top"></td></tr>
426      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     If-None-Match: W/"xyzzy"</span></td><td class="lineno" valign="top"></td></tr>
427      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"</span></td><td class="lineno" valign="top"></td></tr>
428      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     If-None-Match: W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"</span></td><td class="lineno" valign="top"></td></tr>
429      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     If-None-Match: *</span></td><td class="lineno" valign="top"></td></tr>
430      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
431      <tr><td class="lineno" valign="top"></td><td class="left">   If-None-Match is primarily used in conditional GET requests to enable</td><td> </td><td class="right">   If-None-Match is primarily used in conditional GET requests to enable</td><td class="lineno" valign="top"></td></tr>
432      <tr><td class="lineno" valign="top"></td><td class="left">   efficient updates of cached information with a minimum amount of</td><td> </td><td class="right">   efficient updates of cached information with a minimum amount of</td><td class="lineno" valign="top"></td></tr>
433      <tr><td><a name="diff0023" /></td></tr>
434      <tr><td class="lineno" valign="top"></td><td class="lblock">   transaction overhead.  <span class="delete">A</span> client <span class="delete">that has</span> one or more <span class="delete">representations</span></td><td> </td><td class="rblock">   transaction overhead.  <span class="insert">When a</span> client <span class="insert">desires to update</span> one or more</td><td class="lineno" valign="top"></td></tr>
435      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   previously obtained from</span> the <span class="delete">target resource can send</span> If-None-Match</td><td> </td><td class="rblock">   <span class="insert">stored responses that have entity-tags,</span> the <span class="insert">client SHOULD generate an</span></td><td class="lineno" valign="top"></td></tr>
436      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">with</span> a list of <span class="delete">the associated</span> entity-tags <span class="delete">in the hope of receiving</span> a</td><td> </td><td class="rblock">   If-None-Match <span class="insert">header field containing</span> a list of <span class="insert">those</span> entity-tags</td><td class="lineno" valign="top"></td></tr>
437      <tr><td class="lineno" valign="top"></td><td class="lblock">   304 (Not Modified) response <span class="delete">if at least</span> one of those <span class="delete">representations</span></td><td> </td><td class="rblock">   <span class="insert">when making a GET request; this allows recipient servers to send</span> a</td><td class="lineno" valign="top"></td></tr>
438      <tr><td class="lineno" valign="top"></td><td class="lblock">   matches the selected representation.</td><td> </td><td class="rblock">   304 (Not Modified) response <span class="insert">to indicate when</span> one of those <span class="insert">stored</span></td><td class="lineno" valign="top"></td></tr>
439      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   responses</span> matches the selected representation.</td><td class="lineno" valign="top"></td></tr>
440      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
441      <tr><td class="lineno" valign="top"></td><td class="left">   If-None-Match can also be used with a value of "*" to prevent an</td><td> </td><td class="right">   If-None-Match can also be used with a value of "*" to prevent an</td><td class="lineno" valign="top"></td></tr>
442      <tr><td class="lineno" valign="top"></td><td class="left">   unsafe request method (e.g., PUT) from inadvertently modifying an</td><td> </td><td class="right">   unsafe request method (e.g., PUT) from inadvertently modifying an</td><td class="lineno" valign="top"></td></tr>
443      <tr><td class="lineno" valign="top"></td><td class="left">   existing representation of the target resource when the client</td><td> </td><td class="right">   existing representation of the target resource when the client</td><td class="lineno" valign="top"></td></tr>
444      <tr><td class="lineno" valign="top"></td><td class="left">   believes that the resource does not have a current representation</td><td> </td><td class="right">   believes that the resource does not have a current representation</td><td class="lineno" valign="top"></td></tr>
445      <tr><td class="lineno" valign="top"></td><td class="left">   (Section 4.2.1 of [Part2]).  This is a variation on the "lost update"</td><td> </td><td class="right">   (Section 4.2.1 of [Part2]).  This is a variation on the "lost update"</td><td class="lineno" valign="top"></td></tr>
446      <tr><td class="lineno" valign="top"></td><td class="left">   problem that might arise if more than one client attempts to create</td><td> </td><td class="right">   problem that might arise if more than one client attempts to create</td><td class="lineno" valign="top"></td></tr>
447      <tr><td class="lineno" valign="top"></td><td class="left">   an initial representation for the target resource.</td><td> </td><td class="right">   an initial representation for the target resource.</td><td class="lineno" valign="top"></td></tr>
448      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
449      <tr><td><a name="diff0024" /></td></tr>
450      <tr><td class="lineno" valign="top"></td><td class="lblock">     If-None-Match <span class="delete">= "*" / 1#entity-tag</span></td><td> </td><td class="rblock">   <span class="insert">An origin server that receives an</span> If-None-Match <span class="insert">header</span> field <span class="insert">MUST</span></td><td class="lineno" valign="top"></td></tr>
451      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"><span class="insert">   evaluate</span> the <span class="insert">condition prior to performing</span> the <span class="insert">method (Section 5).</span></td><td class="lineno" valign="top"></td></tr>
452      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   The If-None-Match condition is met if and only if none of the entity-</span></td><td> </td><td class="rblock"><span class="insert">   If</span> the <span class="insert">field-value</span> is <span class="insert">"*",</span> the condition is <span class="insert">false</span> if the <span class="insert">origin</span></td><td class="lineno" valign="top"></td></tr>
453      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   tags listed in the If-None-Match</span> field <span class="delete">value match</span> the <span class="delete">entity-tag of</span></td><td> </td><td class="rblock">   server has a <span class="insert">current representation for</span> the <span class="insert">target resource.  If</span> the</td><td class="lineno" valign="top"></td></tr>
454      <tr><td class="lineno" valign="top"></td><td class="lblock">   the <span class="delete">selected representation using</span> the <span class="delete">weak comparison function (as</span></td><td> </td><td class="rblock">   <span class="insert">field-value</span> is <span class="insert">a list of entity-tags,</span> the condition is <span class="insert">false if one</span></td><td class="lineno" valign="top"></td></tr>
455      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   per Section 2.3.2), or if "*"</span> is <span class="delete">given and no current representation</span></td><td> </td><td class="rblock"><span class="insert">   of</span> the <span class="insert">listed tags match</span> the <span class="insert">entity-tag of</span> the <span class="insert">selected</span></td><td class="lineno" valign="top"></td></tr>
456      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   exists for that resource.</span></td><td> </td><td class="rblock"><span class="insert">   representation.</span></td><td class="lineno" valign="top"></td></tr>
457      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
458      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If</span> the condition is <span class="delete">not met, the server MUST NOT perform the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
459      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   requested method.  Instead,</span> if the <span class="delete">request method was GET or HEAD,</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
460      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the</span> server <span class="delete">SHOULD respond with a 304 (Not Modified) status code,</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
461      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   including the cache-related header fields (particularly ETag) of the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
462      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   selected representation that</span> has a <span class="delete">matching entity-tag.  For all</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
463      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   other request methods,</span> the <span class="delete">server MUST respond with a 412</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
464      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   (Precondition Failed) status code when</span> the <span class="delete">condition</span> is <span class="delete">not met.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
465      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
466      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If</span> the condition is <span class="delete">met, the server MAY perform</span> the <span class="delete">requested method</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
467      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   and MUST ignore any If-Modified-Since header field(s) in</span> the <span class="delete">request.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
468      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   That is, if no entity-tags match, then</span> the <span class="delete">server MUST NOT send a 304</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
469      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   (Not Modified) response.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
470      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
471      <tr><td><a name="diff0025" /></td></tr>
472      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Examples:</span></td><td> </td><td class="rblock">   <span class="insert">An origin server MUST NOT perform the requested method if the</span></td><td class="lineno" valign="top"></td></tr>
473      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   condition evaluates to false; instead, the origin server MUST respond</span></td><td class="lineno" valign="top"></td></tr>
474      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   with either a) the 304 (Not Modified) status code if the request</span></td><td class="lineno" valign="top"></td></tr>
475      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   method is GET or HEAD; or, b) the 412 (Precondition Failed) status</span></td><td class="lineno" valign="top"></td></tr>
476      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   code for all other request methods.</span></td><td class="lineno" valign="top"></td></tr>
477      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
478      <tr><td><a name="diff0026" /></td></tr>
479      <tr><td class="lineno" valign="top"></td><td class="lblock">     <span class="delete">If-None-Match: "xyzzy"</span></td><td> </td><td class="rblock">   <span class="insert">Requirements on cache handling of a received If-None-Match header</span></td><td class="lineno" valign="top"></td></tr>
480      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     If-None-Match: W/"xyzzy"</span></td><td> </td><td class="rblock"><span class="insert">   field are defined in Section 4.3.2 of [Part6].</span></td><td class="lineno" valign="top"></td></tr>
481      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
482      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     If-None-Match: W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
483      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     If-None-Match: *</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
484      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
485      <tr><td class="lineno" valign="top"></td><td class="left">3.3.  If-Modified-Since</td><td> </td><td class="right">3.3.  If-Modified-Since</td><td class="lineno" valign="top"></td></tr>
486      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
487      <tr><td><a name="diff0027" /></td></tr>
488      <tr><td class="lineno" valign="top"></td><td class="lblock">   The "If-Modified-Since" header field <span class="delete">can be used with</span> GET or HEAD <span class="delete">to</span></td><td> </td><td class="rblock">   The "If-Modified-Since" header field <span class="insert">makes a</span> GET or HEAD <span class="insert">request</span></td><td class="lineno" valign="top"></td></tr>
489      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   make the</span> method conditional <span class="delete">by modification date: if</span> the selected</td><td> </td><td class="rblock">   method conditional <span class="insert">on</span> the selected <span class="insert">representation's modification date</span></td><td class="lineno" valign="top"></td></tr>
490      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">representation has not been modified since</span> the <span class="delete">time specified</span> in <span class="delete">this</span></td><td> </td><td class="rblock"><span class="insert">   being more recent than</span> the <span class="insert">date provided</span> in the <span class="insert">field-value.</span></td><td class="lineno" valign="top"></td></tr>
491      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   field, then do not perform</span> the <span class="delete">request method; instead, respond as</span></td><td> </td><td class="rblock"><span class="insert">   Transfer of the selected representation's data is avoided if that</span></td><td class="lineno" valign="top"></td></tr>
492      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   detailed below.</span></td><td> </td><td class="rblock"><span class="insert">   data has not changed.</span></td><td class="lineno" valign="top"></td></tr>
493      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
494      <tr><td class="lineno" valign="top"></td><td class="left">     If-Modified-Since = HTTP-date</td><td> </td><td class="right">     If-Modified-Since = HTTP-date</td><td class="lineno" valign="top"></td></tr>
495      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
496      <tr><td class="lineno" valign="top"></td><td class="left">   An example of the field is:</td><td> </td><td class="right">   An example of the field is:</td><td class="lineno" valign="top"></td></tr>
497      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
498      <tr><td class="lineno" valign="top"></td><td class="left">     If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT</td><td> </td><td class="right">     If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT</td><td class="lineno" valign="top"></td></tr>
499      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
500      <tr><td><a name="diff0028" /></td></tr>
501      <tr><td class="lineno" valign="top"></td><td class="lblock">   A <span class="delete">GET method with an</span> If-Modified-Since <span class="delete">header field and no Range</span></td><td> </td><td class="rblock">   A <span class="insert">recipient MUST ignore</span> If-Modified-Since if the <span class="insert">request contains an</span></td><td class="lineno" valign="top"></td></tr>
502      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   header field requests that the selected representation be transferred</span></td><td> </td><td class="rblock"><span class="insert">   If-None-Match</span> header <span class="insert">field;</span> the <span class="insert">condition</span> in <span class="insert">If-None-Match</span> is</td><td class="lineno" valign="top"></td></tr>
503      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   only</span> if <span class="delete">it has been modified since the date given by</span> the <span class="delete">If-Modified-</span></td><td> </td><td class="rblock">   <span class="insert">considered to be a more accurate replacement for</span> the <span class="insert">condition in If-</span></td><td class="lineno" valign="top"></td></tr>
504      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Since</span> header <span class="delete">field.  The algorithm for determining this includes the</span></td><td> </td><td class="rblock"><span class="insert">   Modified-Since and</span> the <span class="insert">two are only combined</span> for the <span class="insert">sake of</span></td><td class="lineno" valign="top"></td></tr>
505      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   following cases:</span></td><td> </td><td class="rblock"><span class="insert">   interoperating with older intermediaries that might not implement If-</span></td><td class="lineno" valign="top"></td></tr>
506      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"><span class="insert">   None-Match.</span></td><td class="lineno" valign="top"></td></tr>
507      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   1.  If</span> the <span class="delete">request would normally result</span> in <span class="delete">anything other than a 200</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
508      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       (OK) status code, or if the passed If-Modified-Since date</span> is</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
509      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">invalid,</span> the <span class="delete">response is exactly</span> the <span class="delete">same as</span> for <span class="delete">a normal GET.  A</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
510      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       date that is later than</span> the <span class="delete">server's current time is invalid.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
511      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
512      <tr><td><a name="diff0029" /></td></tr>
513      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">2.  If</span> the <span class="delete">selected representation has been modified since</span> the <span class="delete">If-</span></td><td> </td><td class="rblock">   <span class="insert">A recipient MUST ignore</span> the <span class="insert">If-Modified-Since header field if</span> the</td><td class="lineno" valign="top"></td></tr>
514      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       Modified-Since date, the response</span> is <span class="delete">exactly the same as for</span> a</td><td> </td><td class="rblock">   <span class="insert">received field-value</span> is <span class="insert">not</span> a <span class="insert">valid HTTP-date, or if the request</span></td><td class="lineno" valign="top"></td></tr>
515      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">normal GET.</span></td><td> </td><td class="rblock"><span class="insert">   method is neither GET nor HEAD.</span></td><td class="lineno" valign="top"></td></tr>
516      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
517      <tr><td><a name="diff0030" /></td></tr>
518      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">3.  If the selected representation has not been modified since a</span></td><td> </td><td class="rblock">   <span class="insert">A recipient MUST interpret an</span> If-Modified-Since <span class="insert">field-value's</span></td><td class="lineno" valign="top"></td></tr>
519      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       valid</span> If-Modified-Since <span class="delete">date,</span> the <span class="delete">server SHOULD send a 304 (Not</span></td><td> </td><td class="rblock"><span class="insert">   timestamp in terms of</span> the <span class="insert">origin server's clock.</span></td><td class="lineno" valign="top"></td></tr>
520      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       Modified) response.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
521      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
522      <tr><td><a name="diff0031" /></td></tr>
523      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The</span> two <span class="delete">purposes of this feature are</span> to allow efficient updates of</td><td> </td><td class="rblock">   <span class="insert">If-Modified-Since is typically used for</span> two <span class="insert">distinct purposes: 1)</span> to</td><td class="lineno" valign="top"></td></tr>
524      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">cached information, with</span> a <span class="delete">minimum amount of transaction overhead,</span></td><td> </td><td class="rblock">   allow efficient updates of a <span class="insert">cached representation that does not have</span></td><td class="lineno" valign="top"></td></tr>
525      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   and</span> to limit the scope of a web traversal to resources that have</td><td> </td><td class="rblock"><span class="insert">   an entity-tag; and, 2)</span> to limit the scope of a web traversal to</td><td class="lineno" valign="top"></td></tr>
526      <tr><td class="lineno" valign="top"></td><td class="lblock">   recently changed.</td><td> </td><td class="rblock">   resources that have recently changed.</td><td class="lineno" valign="top"></td></tr>
527      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
528      <tr><td class="lineno" valign="top"></td><td class="left">   When used for cache updates, a cache will typically use the value of</td><td> </td><td class="right">   When used for cache updates, a cache will typically use the value of</td><td class="lineno" valign="top"></td></tr>
529      <tr><td class="lineno" valign="top"></td><td class="left">   the cached message's Last-Modified field to generate the field value</td><td> </td><td class="right">   the cached message's Last-Modified field to generate the field value</td><td class="lineno" valign="top"></td></tr>
530      <tr><td class="lineno" valign="top"></td><td class="left">   of If-Modified-Since.  This behavior is most interoperable for cases</td><td> </td><td class="right">   of If-Modified-Since.  This behavior is most interoperable for cases</td><td class="lineno" valign="top"></td></tr>
531      <tr><td class="lineno" valign="top"></td><td class="left">   where clocks are poorly synchronized or when the server has chosen to</td><td> </td><td class="right">   where clocks are poorly synchronized or when the server has chosen to</td><td class="lineno" valign="top"></td></tr>
532      <tr><td class="lineno" valign="top"></td><td class="left">   only honor exact timestamp matches (due to a problem with Last-</td><td> </td><td class="right">   only honor exact timestamp matches (due to a problem with Last-</td><td class="lineno" valign="top"></td></tr>
533      <tr><td class="lineno" valign="top"></td><td class="left">   Modified dates that appear to go "back in time" when the origin</td><td> </td><td class="right">   Modified dates that appear to go "back in time" when the origin</td><td class="lineno" valign="top"></td></tr>
534      <tr><td class="lineno" valign="top"></td><td class="left">   server's clock is corrected or a representation is restored from an</td><td> </td><td class="right">   server's clock is corrected or a representation is restored from an</td><td class="lineno" valign="top"></td></tr>
535      <tr><td class="lineno" valign="top"></td><td class="left">   archived backup).  However, caches occasionally generate the field</td><td> </td><td class="right">   archived backup).  However, caches occasionally generate the field</td><td class="lineno" valign="top"></td></tr>
536      <tr><td class="lineno" valign="top"></td><td class="left">   value based on other data, such as the Date header field of the</td><td> </td><td class="right">   value based on other data, such as the Date header field of the</td><td class="lineno" valign="top"></td></tr>
537      <tr><td class="lineno" valign="top"></td><td class="left">   cached message or the local clock time that the message was received,</td><td> </td><td class="right">   cached message or the local clock time that the message was received,</td><td class="lineno" valign="top"></td></tr>
538      <tr><td class="lineno" valign="top"></td><td class="left">   particularly when the cached message does not contain a Last-Modified</td><td> </td><td class="right">   particularly when the cached message does not contain a Last-Modified</td><td class="lineno" valign="top"></td></tr>
539      <tr><td class="lineno" valign="top"></td><td class="left">   field.</td><td> </td><td class="right">   field.</td><td class="lineno" valign="top"></td></tr>
540      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
541      <tr><td class="lineno" valign="top"></td><td class="left">   When used for limiting the scope of retrieval to a recent time</td><td> </td><td class="right">   When used for limiting the scope of retrieval to a recent time</td><td class="lineno" valign="top"></td></tr>
542      <tr><td class="lineno" valign="top"></td><td class="left">   window, a user agent will generate an If-Modified-Since field value</td><td> </td><td class="right">   window, a user agent will generate an If-Modified-Since field value</td><td class="lineno" valign="top"></td></tr>
543      <tr><td class="lineno" valign="top"></td><td class="left">   based on either its own local clock or a Date header field received</td><td> </td><td class="right">   based on either its own local clock or a Date header field received</td><td class="lineno" valign="top"></td></tr>
544      <tr><td><a name="diff0032" /></td></tr>
545      <tr><td class="lineno" valign="top"></td><td class="lblock">   from the server <span class="delete">during a past run</span>.  Origin servers that choose an</td><td> </td><td class="rblock">   from the server <span class="insert">in a prior response</span>.  Origin servers that choose an</td><td class="lineno" valign="top"></td></tr>
546      <tr><td class="lineno" valign="top"></td><td class="left">   exact timestamp match based on the selected representation's Last-</td><td> </td><td class="right">   exact timestamp match based on the selected representation's Last-</td><td class="lineno" valign="top"></td></tr>
547      <tr><td class="lineno" valign="top"></td><td class="left">   Modified field will not be able to help the user agent limit its data</td><td> </td><td class="right">   Modified field will not be able to help the user agent limit its data</td><td class="lineno" valign="top"></td></tr>
548      <tr><td class="lineno" valign="top"></td><td class="left">   transfers to only those changed during the specified window.</td><td> </td><td class="right">   transfers to only those changed during the specified window.</td><td class="lineno" valign="top"></td></tr>
549      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
550      <tr><td><a name="diff0033" /></td></tr>
551      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Note: If a client uses</span> an <span class="delete">arbitrary date in the</span> If-Modified-Since</td><td> </td><td class="rblock">   <span class="insert">An origin server that receives</span> an If-Modified-Since header field</td><td class="lineno" valign="top"></td></tr>
552      <tr><td class="lineno" valign="top"></td><td class="lblock">      header field <span class="delete">instead of a date taken from a Last-Modified or Date</span></td><td> </td><td class="rblock">   <span class="insert">SHOULD evaluate</span> the <span class="insert">condition prior to performing the method</span></td><td class="lineno" valign="top"></td></tr>
553      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      header field from</span> the origin <span class="delete">server,</span> the <span class="delete">client ought to be aware</span></td><td> </td><td class="rblock"><span class="insert">   (Section 5).  The</span> origin <span class="insert">server SHOULD NOT perform</span> the <span class="insert">requested</span></td><td class="lineno" valign="top"></td></tr>
554      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      that its</span> date <span class="delete">will be interpreted according</span> to the <span class="delete">server's</span></td><td> </td><td class="rblock"><span class="insert">   method if the selected representation's last modification</span> date <span class="insert">is</span></td><td class="lineno" valign="top"></td></tr>
555      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      understanding</span> of <span class="delete">time.</span></td><td> </td><td class="rblock"><span class="insert">   earlier than or equal</span> to the <span class="insert">date provided in the field-value;</span></td><td class="lineno" valign="top"></td></tr>
556      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   instead, the origin server SHOULD generate a 304 (Not Modified)</span></td><td class="lineno" valign="top"></td></tr>
557      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   response, including only those metadata that are useful for</span></td><td class="lineno" valign="top"></td></tr>
558      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   identifying or updating a previously cached response.</span></td><td class="lineno" valign="top"></td></tr>
559      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
560      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Requirements on cache handling of a received If-Modified-Since header</span></td><td class="lineno" valign="top"></td></tr>
561      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   field are defined in Section 4.3.2</span> of <span class="insert">[Part6].</span></td><td class="lineno" valign="top"></td></tr>
562      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
563      <tr><td class="lineno" valign="top"></td><td class="left">3.4.  If-Unmodified-Since</td><td> </td><td class="right">3.4.  If-Unmodified-Since</td><td class="lineno" valign="top"></td></tr>
564      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
565      <tr><td><a name="diff0034" /></td></tr>
566      <tr><td class="lineno" valign="top"></td><td class="lblock">   The "If-Unmodified-Since" header field <span class="delete">can be used to make a</span> request</td><td> </td><td class="rblock">   The "If-Unmodified-Since" header field <span class="insert">makes the</span> request method</td><td class="lineno" valign="top"></td></tr>
567      <tr><td class="lineno" valign="top"></td><td class="lblock">   method conditional <span class="delete">by modification date: if</span> the selected</td><td> </td><td class="rblock">   conditional <span class="insert">on</span> the selected <span class="insert">representation's last modification date</span></td><td class="lineno" valign="top"></td></tr>
568      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">representation has been modified since</span> the <span class="delete">time specified</span> in <span class="delete">this</span></td><td> </td><td class="rblock"><span class="insert">   being earlier than or equal to</span> the <span class="insert">date provided</span> in the <span class="insert">field-value.</span></td><td class="lineno" valign="top"></td></tr>
569      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   field, then the server MUST NOT perform the requested operation and</span></td><td> </td><td class="rblock"><span class="insert">   This field accomplishes the same purpose as If-Match for cases where</span></td><td class="lineno" valign="top"></td></tr>
570      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   MUST instead respond with the 412 (Precondition Failed) status code.</span></td><td> </td><td class="rblock"><span class="insert">   the user agent does</span> not <span class="insert">have an entity-tag for</span> the <span class="insert">representation.</span></td><td class="lineno" valign="top"></td></tr>
571      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If</span> the <span class="delete">selected representation has</span> not <span class="delete">been modified since the time</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
572      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   specified in this field, the server MAY perform</span> the <span class="delete">request.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
573      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
574      <tr><td class="lineno" valign="top"></td><td class="left">     If-Unmodified-Since = HTTP-date</td><td> </td><td class="right">     If-Unmodified-Since = HTTP-date</td><td class="lineno" valign="top"></td></tr>
575      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
576      <tr><td class="lineno" valign="top"></td><td class="left">   An example of the field is:</td><td> </td><td class="right">   An example of the field is:</td><td class="lineno" valign="top"></td></tr>
577      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
578      <tr><td class="lineno" valign="top"></td><td class="left">     If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT</td><td> </td><td class="right">     If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT</td><td class="lineno" valign="top"></td></tr>
579      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
580      <tr><td><a name="diff0035" /></td></tr>
581      <tr><td class="lineno" valign="top"></td><td class="lblock">   A <span class="delete">server</span> MUST ignore the If-Unmodified-Since header field if the</td><td> </td><td class="rblock">   A <span class="insert">recipient MUST ignore If-Unmodified-Since if the request contains</span></td><td class="lineno" valign="top"></td></tr>
582      <tr><td class="lineno" valign="top"></td><td class="lblock">   received <span class="delete">value</span> is not a valid HTTP-date.</td><td> </td><td class="rblock"><span class="insert">   an If-Match header field; the condition in If-Match is considered to</span></td><td class="lineno" valign="top"></td></tr>
583      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   be a more accurate replacement for the condition in If-Unmodified-</span></td><td class="lineno" valign="top"></td></tr>
584      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Since and the two are only combined for the sake of interoperating</span></td><td class="lineno" valign="top"></td></tr>
585      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   with older intermediaries that might not implement If-Match.</span></td><td class="lineno" valign="top"></td></tr>
586      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
587      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   A recipient</span> MUST ignore the If-Unmodified-Since header field if the</td><td class="lineno" valign="top"></td></tr>
588      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   received <span class="insert">field-value</span> is not a valid HTTP-date.</td><td class="lineno" valign="top"></td></tr>
589      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
590      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">A recipient MUST interpret an If-Unmodified-Since field-value's</span></td><td class="lineno" valign="top"></td></tr>
591      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   timestamp in terms of the origin server's clock.</span></td><td class="lineno" valign="top"></td></tr>
592      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
593      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   If-Unmodified-Since is most often used with state-changing methods</span></td><td class="lineno" valign="top"></td></tr>
594      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   (e.g., POST, PUT, DELETE) to prevent accidental overwrites when</span></td><td class="lineno" valign="top"></td></tr>
595      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   multiple user agents might be acting in parallel on a resource that</span></td><td class="lineno" valign="top"></td></tr>
596      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   does not supply entity-tags with its representations (i.e., to</span></td><td class="lineno" valign="top"></td></tr>
597      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   prevent the "lost update" problem).  It can also be used with safe</span></td><td class="lineno" valign="top"></td></tr>
598      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   methods to abort a request if the selected representation does not</span></td><td class="lineno" valign="top"></td></tr>
599      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   match one already stored (or partially stored) from a prior request.</span></td><td class="lineno" valign="top"></td></tr>
600      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
601      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   An origin server that receives an If-Unmodified-Since header field</span></td><td class="lineno" valign="top"></td></tr>
602      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   MUST evaluate the condition prior to performing the method</span></td><td class="lineno" valign="top"></td></tr>
603      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   (Section 5).  The origin server MUST NOT perform the requested method</span></td><td class="lineno" valign="top"></td></tr>
604      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   if the selected representation's last modification date is more</span></td><td class="lineno" valign="top"></td></tr>
605      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   recent than the date provided in the field-value; instead the origin</span></td><td class="lineno" valign="top"></td></tr>
606      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   server MUST respond with either: a) the 412 (Precondition Failed)</span></td><td class="lineno" valign="top"></td></tr>
607      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   status code; or, b) one of the 2xx (Successful) status codes if the</span></td><td class="lineno" valign="top"></td></tr>
608      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   origin server has verified that a state change is being requested and</span></td><td class="lineno" valign="top"></td></tr>
609      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the final state is already reflected in the current state of the</span></td><td class="lineno" valign="top"></td></tr>
610      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   target resource (i.e., the change requested by the user agent has</span></td><td class="lineno" valign="top"></td></tr>
611      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   already succeeded, but the user agent might not be aware of that</span></td><td class="lineno" valign="top"></td></tr>
612      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   because the prior response message was lost or a compatible change</span></td><td class="lineno" valign="top"></td></tr>
613      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   was made by some other user agent).  In the latter case, the origin</span></td><td class="lineno" valign="top"></td></tr>
614      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   server MUST NOT send a validator header field in the response unless</span></td><td class="lineno" valign="top"></td></tr>
615      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   it can verify that the request is a duplicate of an immediately prior</span></td><td class="lineno" valign="top"></td></tr>
616      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   change made by the same user agent.</span></td><td class="lineno" valign="top"></td></tr>
617      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
618      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The If-Unmodified-Since header field can be ignored by caches and</span></td><td class="lineno" valign="top"></td></tr>
619      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   intermediaries because it is not applicable to a stored response.</span></td><td class="lineno" valign="top"></td></tr>
620      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
621      <tr><td class="lineno" valign="top"></td><td class="left">3.5.  If-Range</td><td> </td><td class="right">3.5.  If-Range</td><td class="lineno" valign="top"></td></tr>
622      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
623      <tr><td class="lineno" valign="top"></td><td class="left">   The "If-Range" header field provides a special conditional request</td><td> </td><td class="right">   The "If-Range" header field provides a special conditional request</td><td class="lineno" valign="top"></td></tr>
624      <tr><td><a name="diff0036" /></td></tr>
625      <tr><td class="lineno" valign="top"></td><td class="lblock">   mechanism that is similar to If-Match and If-Unmodified-Since but</td><td> </td><td class="rblock">   mechanism that is similar to <span class="insert">the</span> If-Match and If-Unmodified-Since</td><td class="lineno" valign="top"></td></tr>
626      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">specific</span> to <span class="delete">range requests.</span>  If-Range is defined in Section 3.2 of</td><td> </td><td class="rblock">   <span class="insert">header fields</span> but <span class="insert">instructs the recipient</span> to <span class="insert">ignore the Range header</span></td><td class="lineno" valign="top"></td></tr>
627      <tr><td class="lineno" valign="top"></td><td class="lblock">   [Part5].</td><td> </td><td class="rblock"><span class="insert">   field if the validator doesn't match, resulting in transfer of the</span></td><td class="lineno" valign="top"></td></tr>
628      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   new selected representation instead of a 412 response.</span>  If-Range is</td><td class="lineno" valign="top"></td></tr>
629      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   defined in Section 3.2 of [Part5].</td><td class="lineno" valign="top"></td></tr>
630      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
631      <tr><td class="lineno" valign="top"></td><td class="left">4.  Status Code Definitions</td><td> </td><td class="right">4.  Status Code Definitions</td><td class="lineno" valign="top"></td></tr>
632      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
633      <tr><td class="lineno" valign="top"></td><td class="left">4.1.  304 Not Modified</td><td> </td><td class="right">4.1.  304 Not Modified</td><td class="lineno" valign="top"></td></tr>
634      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
635      <tr><td class="lineno" valign="top"></td><td class="left">   The 304 (Not Modified) status code indicates that a conditional GET</td><td> </td><td class="right">   The 304 (Not Modified) status code indicates that a conditional GET</td><td class="lineno" valign="top"></td></tr>
636      <tr><td class="lineno" valign="top"></td><td class="left">   or HEAD request has been received and would have resulted in a 200</td><td> </td><td class="right">   or HEAD request has been received and would have resulted in a 200</td><td class="lineno" valign="top"></td></tr>
637      <tr><td class="lineno" valign="top"></td><td class="left">   (OK) response if it were not for the fact that the condition has</td><td> </td><td class="right">   (OK) response if it were not for the fact that the condition has</td><td class="lineno" valign="top"></td></tr>
638      <tr><td class="lineno" valign="top"></td><td class="left">   evaluated to false.  In other words, there is no need for the server</td><td> </td><td class="right">   evaluated to false.  In other words, there is no need for the server</td><td class="lineno" valign="top"></td></tr>
639      <tr><td class="lineno" valign="top"></td><td class="left">   to transfer a representation of the target resource because the</td><td> </td><td class="right">   to transfer a representation of the target resource because the</td><td class="lineno" valign="top"></td></tr>
640      <tr><td class="lineno" valign="top"></td><td class="left">   request indicates that the client, which made the request</td><td> </td><td class="right">   request indicates that the client, which made the request</td><td class="lineno" valign="top"></td></tr>
641      <tr><td class="lineno" valign="top"></td><td class="left">   conditional, already has a valid representation; the server is</td><td> </td><td class="right">   conditional, already has a valid representation; the server is</td><td class="lineno" valign="top"></td></tr>
642      <tr><td class="lineno" valign="top"></td><td class="left">   therefore redirecting the client to make use of that stored</td><td> </td><td class="right">   therefore redirecting the client to make use of that stored</td><td class="lineno" valign="top"></td></tr>
643      <tr><td class="lineno" valign="top"></td><td class="left">   representation as if it were the payload of a 200 (OK) response.</td><td> </td><td class="right">   representation as if it were the payload of a 200 (OK) response.</td><td class="lineno" valign="top"></td></tr>
644      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
645      <tr><td class="lineno" valign="top"></td><td class="left">   The server generating a 304 response MUST generate any of the</td><td> </td><td class="right">   The server generating a 304 response MUST generate any of the</td><td class="lineno" valign="top"></td></tr>
646      <tr><td class="lineno" valign="top"></td><td class="left">   following header fields that would have been sent in a 200 (OK)</td><td> </td><td class="right">   following header fields that would have been sent in a 200 (OK)</td><td class="lineno" valign="top"></td></tr>
647      <tr><td><a name="diff0037" /></td></tr>
648      <tr><td class="lineno" valign="top"></td><td class="lblock">   response to the same request: Cache-Control, Content-Location, ETag,</td><td> </td><td class="rblock">   response to the same request: Cache-Control, Content-Location, <span class="insert">Date,</span></td><td class="lineno" valign="top"></td></tr>
649      <tr><td class="lineno" valign="top"></td><td class="lblock">   Expires, and Vary.</td><td> </td><td class="rblock">   ETag, Expires, and Vary.</td><td class="lineno" valign="top"></td></tr>
650      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
651      <tr><td class="lineno" valign="top"></td><td class="left">   Since the goal of a 304 response is to minimize information transfer</td><td> </td><td class="right">   Since the goal of a 304 response is to minimize information transfer</td><td class="lineno" valign="top"></td></tr>
652      <tr><td class="lineno" valign="top"></td><td class="left">   when the recipient already has one or more cached representations, a</td><td> </td><td class="right">   when the recipient already has one or more cached representations, a</td><td class="lineno" valign="top"></td></tr>
653      <tr><td class="lineno" valign="top"></td><td class="left">   sender SHOULD NOT generate representation metadata other than the</td><td> </td><td class="right">   sender SHOULD NOT generate representation metadata other than the</td><td class="lineno" valign="top"></td></tr>
654      <tr><td class="lineno" valign="top"></td><td class="left">   above listed fields unless said metadata exists for the purpose of</td><td> </td><td class="right">   above listed fields unless said metadata exists for the purpose of</td><td class="lineno" valign="top"></td></tr>
655      <tr><td class="lineno" valign="top"></td><td class="left">   guiding cache updates (e.g., Last-Modified might be useful if the</td><td> </td><td class="right">   guiding cache updates (e.g., Last-Modified might be useful if the</td><td class="lineno" valign="top"></td></tr>
656      <tr><td class="lineno" valign="top"></td><td class="left">   response does not have an ETag field).</td><td> </td><td class="right">   response does not have an ETag field).</td><td class="lineno" valign="top"></td></tr>
657      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
658      <tr><td class="lineno" valign="top"></td><td class="left">   Requirements on a cache that receives a 304 response are defined in</td><td> </td><td class="right">   Requirements on a cache that receives a 304 response are defined in</td><td class="lineno" valign="top"></td></tr>
659      <tr><td><a name="diff0038" /></td></tr>
660      <tr><td class="lineno" valign="top"></td><td class="lblock">   Section 4.<span class="delete">2.1</span> of [Part6].  If the conditional request originated with</td><td> </td><td class="rblock">   Section 4.<span class="insert">3.4</span> of [Part6].  If the conditional request originated with</td><td class="lineno" valign="top"></td></tr>
661      <tr><td class="lineno" valign="top"></td><td class="left">   an outbound client, such as a user agent with its own cache sending a</td><td> </td><td class="right">   an outbound client, such as a user agent with its own cache sending a</td><td class="lineno" valign="top"></td></tr>
662      <tr><td class="lineno" valign="top"></td><td class="left">   conditional GET to a shared proxy, then the proxy SHOULD forward the</td><td> </td><td class="right">   conditional GET to a shared proxy, then the proxy SHOULD forward the</td><td class="lineno" valign="top"></td></tr>
663      <tr><td class="lineno" valign="top"></td><td class="left">   304 response to that client.</td><td> </td><td class="right">   304 response to that client.</td><td class="lineno" valign="top"></td></tr>
664      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
665      <tr><td class="lineno" valign="top"></td><td class="left">   A 304 response cannot contain a message-body; it is always terminated</td><td> </td><td class="right">   A 304 response cannot contain a message-body; it is always terminated</td><td class="lineno" valign="top"></td></tr>
666      <tr><td class="lineno" valign="top"></td><td class="left">   by the first empty line after the header fields.</td><td> </td><td class="right">   by the first empty line after the header fields.</td><td class="lineno" valign="top"></td></tr>
667      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
668      <tr><td class="lineno" valign="top"></td><td class="left">4.2.  412 Precondition Failed</td><td> </td><td class="right">4.2.  412 Precondition Failed</td><td class="lineno" valign="top"></td></tr>
669      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
670      <tr><td class="lineno" valign="top"></td><td class="left">   The 412 (Precondition Failed) status code indicates that one or more</td><td> </td><td class="right">   The 412 (Precondition Failed) status code indicates that one or more</td><td class="lineno" valign="top"></td></tr>
671      <tr><td><a name="diff0039" /></td></tr>
672      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">preconditions</span> given in the request header fields evaluated to false</td><td> </td><td class="rblock">   <span class="insert">conditions</span> given in the request header fields evaluated to false when</td><td class="lineno" valign="top"></td></tr>
673      <tr><td class="lineno" valign="top"></td><td class="lblock">   when tested on the server.  This response code allows the client to</td><td> </td><td class="rblock">   tested on the server.  This response code allows the client to place</td><td class="lineno" valign="top"></td></tr>
674      <tr><td class="lineno" valign="top"></td><td class="lblock">   place preconditions on the current resource state (its current</td><td> </td><td class="rblock">   preconditions on the current resource state (its current</td><td class="lineno" valign="top"></td></tr>
675      <tr><td class="lineno" valign="top"></td><td class="left">   representations and metadata) and thus prevent the request method</td><td> </td><td class="right">   representations and metadata) and thus prevent the request method</td><td class="lineno" valign="top"></td></tr>
676      <tr><td class="lineno" valign="top"></td><td class="left">   from being applied if the target resource is in an unexpected state.</td><td> </td><td class="right">   from being applied if the target resource is in an unexpected state.</td><td class="lineno" valign="top"></td></tr>
677      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
678      <tr><td><a name="diff0040" /></td></tr>
679      <tr><td class="lineno" valign="top"></td><td class="lblock">5.  Evaluation<span class="delete"> and Precedence</span></td><td> </td><td class="rblock">5.  Evaluation</td><td class="lineno" valign="top"></td></tr>
680      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
681      <tr><td><a name="diff0041" /></td></tr>
682      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">For each conditional request,</span> a server MUST evaluate <span class="delete">the</span> request</td><td> </td><td class="rblock">   <span class="insert">Except when excluded below,</span> a <span class="insert">recipient cache or origin</span> server MUST</td><td class="lineno" valign="top"></td></tr>
683      <tr><td class="lineno" valign="top"></td><td class="lblock">   preconditions after it has successfully performed its normal request</td><td> </td><td class="rblock">   evaluate <span class="insert">received</span> request preconditions after it has successfully</td><td class="lineno" valign="top"></td></tr>
684      <tr><td class="lineno" valign="top"></td><td class="lblock">   checks <span class="delete">(i.e.,</span> just before it would perform the action associated with</td><td> </td><td class="rblock">   performed its normal request checks <span class="insert">and</span> just before it would perform</td><td class="lineno" valign="top"></td></tr>
685      <tr><td class="lineno" valign="top"></td><td class="lblock">   the request <span class="delete">method).  Preconditions are ignored if the</span> server</td><td> </td><td class="rblock">   the action associated with the request <span class="insert">method.  A</span> server <span class="insert">MUST ignore</span></td><td class="lineno" valign="top"></td></tr>
686      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">determines that an error or redirect</span> response <span class="delete">applies before they are</span></td><td> </td><td class="rblock"><span class="insert">   all received preconditions if its</span> response <span class="insert">to</span> the <span class="insert">same request</span></td><td class="lineno" valign="top"></td></tr>
687      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   evaluated.  Otherwise, the evaluation depends on both</span> the <span class="delete">method</span></td><td> </td><td class="rblock"><span class="insert">   without those conditions would have been a status code other than a</span></td><td class="lineno" valign="top"></td></tr>
688      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   semantics</span> and the <span class="delete">choice</span> of <span class="delete">conditional.</span></td><td> </td><td class="rblock"><span class="insert">   2xx or 412 (Precondition Failed).  In other words, redirects</span> and</td><td class="lineno" valign="top"></td></tr>
689      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">failures take precedence over</span> the <span class="insert">evaluation</span> of <span class="insert">preconditions in</span></td><td class="lineno" valign="top"></td></tr>
690      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   conditional requests.</span></td><td class="lineno" valign="top"></td></tr>
691      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
692      <tr><td><a name="diff0042" /></td></tr>
693      <tr><td class="lineno" valign="top"></td><td class="lblock">   A <span class="delete">conditional request header field</span> that is <span class="delete">designed specifically</span> for</td><td> </td><td class="rblock">   A <span class="insert">server</span> that is <span class="insert">not the origin server</span> for <span class="insert">the target resource</span> and</td><td class="lineno" valign="top"></td></tr>
694      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">cache validation, which includes If-None-Match</span> and <span class="delete">If-Modified-Since</span></td><td> </td><td class="rblock">   <span class="insert">cannot act as</span> a <span class="insert">cache for requests on the target resource MUST NOT</span></td><td class="lineno" valign="top"></td></tr>
695      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   when used in</span> a <span class="delete">GET or HEAD request, allows cached representations to</span></td><td> </td><td class="rblock"><span class="insert">   evaluate the conditional request header fields defined</span> by <span class="insert">this</span></td><td class="lineno" valign="top"></td></tr>
696      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   be refreshed without repeatedly transferring data already held</span> by the</td><td> </td><td class="rblock"><span class="insert">   specification, and MUST forward them if</span> the <span class="insert">request</span> is <span class="insert">forwarded,</span></td><td class="lineno" valign="top"></td></tr>
697      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">client.  Evaluating to false</span> is <span class="delete">thus an indication that</span> the client</td><td> </td><td class="rblock"><span class="insert">   since</span> the <span class="insert">generating</span> client <span class="insert">intends that they be evaluated</span> by a</td><td class="lineno" valign="top"></td></tr>
698      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">can continue to use its local copy of the selected representation, as</span></td><td> </td><td class="rblock">   <span class="insert">server</span> that <span class="insert">can provide a current representation.  Likewise, a server</span></td><td class="lineno" valign="top"></td></tr>
699      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   indicated</span> by <span class="delete">the server generating</span> a <span class="delete">304 (Not Modified) response</span> that</td><td> </td><td class="rblock"><span class="insert">   MUST ignore the conditional request</span> header fields <span class="insert">defined by this</span></td><td class="lineno" valign="top"></td></tr>
700      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">includes only those</span> header fields <span class="delete">useful for refreshing</span> the <span class="delete">cached</span></td><td> </td><td class="rblock"><span class="insert">   specification when received with a request method that does not</span></td><td class="lineno" valign="top"></td></tr>
701      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   representation.</span></td><td> </td><td class="rblock"><span class="insert">   involve</span> the <span class="insert">selection or modification of a selected representation,</span></td><td class="lineno" valign="top"></td></tr>
702      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   such as CONNECT, OPTIONS, or TRACE.</span></td><td class="lineno" valign="top"></td></tr>
703      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
704      <tr><td><a name="diff0043" /></td></tr>
705      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">All other conditionals</span> are <span class="delete">intended to signal failure when the</span></td><td> </td><td class="rblock">   <span class="insert">Conditional request header fields that</span> are <span class="insert">defined by extensions</span> to</td><td class="lineno" valign="top"></td></tr>
706      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   precondition evaluates to false.  For example, an If-Match</span></td><td> </td><td class="rblock">   <span class="insert">HTTP might place conditions on all recipients,</span> on the state <span class="insert">of</span> the</td><td class="lineno" valign="top"></td></tr>
707      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   conditional sent with a state-changing method (e.g., POST, PUT,</span></td><td> </td><td class="rblock">   <span class="insert">target</span> resource <span class="insert">in general, or on a group of resources.  For</span></td><td class="lineno" valign="top"></td></tr>
708      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   DELETE) is intended</span> to <span class="delete">prevent the request from taking effect</span> on the</td><td> </td><td class="rblock"><span class="insert">   instance,</span> the <span class="insert">"If" header field in WebDAV can make a</span> request</td><td class="lineno" valign="top"></td></tr>
709      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">target resource if the resource</span> state <span class="delete">does not match the expected</span></td><td> </td><td class="rblock">   <span class="insert">conditional on various aspects of multiple resources, such as locks,</span></td><td class="lineno" valign="top"></td></tr>
710      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   state.  In other words, evaluating the condition to false means that</span></td><td> </td><td class="rblock"><span class="insert">   if</span> the <span class="insert">recipient understands and implements that field ([RFC4918],</span></td><td class="lineno" valign="top"></td></tr>
711      <tr><td class="lineno" valign="top"></td><td class="lblock">   the resource <span class="delete">has been changed by some other client, perhaps by</span></td><td> </td><td class="rblock"><span class="insert">   Section 10.4).</span></td><td class="lineno" valign="top"></td></tr>
712      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   another user attempting to edit the same resource, and thus</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
713      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   preventing</span> the request <span class="delete">from being applied saves the client from</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
714      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   overwriting some other client's work.  This result is indicated by</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
715      <tr><td class="lineno" valign="top"></td><td class="lblock">   the <span class="delete">server generating a 412 (Precondition Failed) response.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
716      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
717      <tr><td><a name="diff0044" /></td></tr>
718      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The</span> conditional request header fields <span class="delete">defined by this specification</span></td><td> </td><td class="rblock">   <span class="insert">Although</span> conditional request header fields are defined <span class="insert">as being</span></td><td class="lineno" valign="top"></td></tr>
719      <tr><td class="lineno" valign="top"></td><td class="lblock">   are <span class="delete">ignored for request methods that never involve the selection or</span></td><td> </td><td class="rblock"><span class="insert">   usable with</span> the <span class="insert">HEAD method (to keep HEAD's semantics consistent with</span></td><td class="lineno" valign="top"></td></tr>
720      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   modification of a selected representation (e.g., CONNECT, OPTIONS,</span></td><td> </td><td class="rblock"><span class="insert">   those</span> of <span class="insert">GET), there is no point</span> in <span class="insert">sending</span> a conditional <span class="insert">HEAD</span></td><td class="lineno" valign="top"></td></tr>
721      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   and TRACE).  Other conditional request header fields,</span> defined <span class="delete">by</span></td><td> </td><td class="rblock"><span class="insert">   because a successful response is around the same size</span> as <span class="insert">a 304 (Not</span></td><td class="lineno" valign="top"></td></tr>
722      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   extensions to HTTP, might place conditions on</span> the <span class="delete">state</span> of <span class="delete">the target</span></td><td> </td><td class="rblock"><span class="insert">   Modified) response and more useful than a 412 (Precondition Failed)</span></td><td class="lineno" valign="top"></td></tr>
723      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   resource</span> in <span class="delete">general, or on</span> a <span class="delete">group of resources.  For instance, the</span></td><td> </td><td class="rblock"><span class="insert">   response.</span></td><td class="lineno" valign="top"></td></tr>
724      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If header field in WebDAV can make a request</span> conditional <span class="delete">on various</span></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
725      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   aspects (such</span> as <span class="delete">locks) of multiple resources ([RFC4918], Section</span></td><td> </td><td class="rblock"><span class="insert">6.  Precedence</span></td><td class="lineno" valign="top"></td></tr>
726      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   10.4).</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
727      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
728      <tr><td class="lineno" valign="top"></td><td class="left">   When more than one conditional request header field is present in a</td><td> </td><td class="right">   When more than one conditional request header field is present in a</td><td class="lineno" valign="top"></td></tr>
729      <tr><td class="lineno" valign="top"></td><td class="left">   request, the order in which the fields are evaluated becomes</td><td> </td><td class="right">   request, the order in which the fields are evaluated becomes</td><td class="lineno" valign="top"></td></tr>
730      <tr><td class="lineno" valign="top"></td><td class="left">   important.  In practice, the fields defined in this document are</td><td> </td><td class="right">   important.  In practice, the fields defined in this document are</td><td class="lineno" valign="top"></td></tr>
731      <tr><td><a name="diff0045" /></td></tr>
732      <tr><td class="lineno" valign="top"></td><td class="lblock">   consistently implemented in a single, logical order, <span class="delete">due to the fact</span></td><td> </td><td class="rblock">   consistently implemented in a single, logical order, <span class="insert">since "lost</span></td><td class="lineno" valign="top"></td></tr>
733      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   that</span> entity tags are presumed to be more accurate than date</td><td> </td><td class="rblock"><span class="insert">   update" preconditions have more strict requirements than cache</span></td><td class="lineno" valign="top"></td></tr>
734      <tr><td class="lineno" valign="top"></td><td class="lblock">   validators.  <span class="delete">For example, the only reason to send both If-Modified-</span></td><td> </td><td class="rblock"><span class="insert">   validation, a validated cache is more efficient than a partial</span></td><td class="lineno" valign="top"></td></tr>
735      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Since and If-None-Match in the same GET request is to support</span></td><td> </td><td class="rblock"><span class="insert">   response, and</span> entity tags are presumed to be more accurate than date</td><td class="lineno" valign="top"></td></tr>
736      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   intermediary caches that might not have implemented If-None-Match, so</span></td><td> </td><td class="rblock">   validators.</td><td class="lineno" valign="top"></td></tr>
737      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   it makes sense to ignore the If-Modified-Since when entity tags are</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
738      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   understood and available for the selected representation.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
739      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
740      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   The general rule of conditional precedence is that exact match</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
741      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   conditions are evaluated before cache-validating conditions and,</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
742      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   within that order, last-modified conditions are only evaluated if the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
743      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   corresponding entity tag condition is not present (or not applicable</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
744      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   because the selected representation does not have an entity tag).</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
745      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
746      <tr><td><a name="diff0046" /></td></tr>
747      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Specifically,</span> the <span class="delete">fields</span> defined by this specification <span class="delete">are evaluated</span></td><td> </td><td class="rblock">   <span class="insert">A recipient cache or origin server MUST evaluate</span> the <span class="insert">request</span></td><td class="lineno" valign="top"></td></tr>
748      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   as follows:</span></td><td> </td><td class="rblock"><span class="insert">   preconditions</span> defined by this specification <span class="insert">in the following order:</span></td><td class="lineno" valign="top"></td></tr>
749      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
750      <tr><td><a name="diff0047" /></td></tr>
751      <tr><td class="lineno" valign="top"></td><td class="lblock">   1.  When If-Match is present, evaluate <span class="delete">it:</span></td><td> </td><td class="rblock">   1.  When <span class="insert">recipient is the origin server and</span> If-Match is present,</td><td class="lineno" valign="top"></td></tr>
752      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">       evaluate <span class="insert">the If-Match precondition:</span></td><td class="lineno" valign="top"></td></tr>
753      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
754      <tr><td class="lineno" valign="top"></td><td class="left">       *  if true, continue to step 3</td><td> </td><td class="right">       *  if true, continue to step 3</td><td class="lineno" valign="top"></td></tr>
755      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
756      <tr><td><a name="diff0048" /></td></tr>
757      <tr><td class="lineno" valign="top"></td><td class="lblock">       *  if false, respond 412 (Precondition Failed)</td><td> </td><td class="rblock">       *  if false, respond 412 (Precondition Failed) <span class="insert">unless it can be</span></td><td class="lineno" valign="top"></td></tr>
758      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">          determined that the state-changing request has already</span></td><td class="lineno" valign="top"></td></tr>
759      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">          succeeded (see Section 3.1)</span></td><td class="lineno" valign="top"></td></tr>
760      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
761      <tr><td><a name="diff0049" /></td></tr>
762      <tr><td class="lineno" valign="top"></td><td class="lblock">   2.  When If-Match is not <span class="delete">present</span> and If-Unmodified-Since is present,</td><td> </td><td class="rblock">   2.  When <span class="insert">recipient is the origin server,</span> If-Match is not <span class="insert">present,</span> and</td><td class="lineno" valign="top"></td></tr>
763      <tr><td class="lineno" valign="top"></td><td class="lblock">       evaluate <span class="delete">it:</span></td><td> </td><td class="rblock">       If-Unmodified-Since is present, evaluate <span class="insert">the If-Unmodified-Since</span></td><td class="lineno" valign="top"></td></tr>
764      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">       precondition:</span></td><td class="lineno" valign="top"></td></tr>
765      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
766      <tr><td class="lineno" valign="top"></td><td class="left">       *  if true, continue to step 3</td><td> </td><td class="right">       *  if true, continue to step 3</td><td class="lineno" valign="top"></td></tr>
767      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
768      <tr><td><a name="diff0050" /></td></tr>
769      <tr><td class="lineno" valign="top"></td><td class="lblock">       *  if false, respond 412 (Precondition Failed)</td><td> </td><td class="rblock">       *  if false, respond 412 (Precondition Failed) <span class="insert">unless it can be</span></td><td class="lineno" valign="top"></td></tr>
770      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">          determined that the state-changing request has already</span></td><td class="lineno" valign="top"></td></tr>
771      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">          succeeded (see Section 3.4)</span></td><td class="lineno" valign="top"></td></tr>
772      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
773      <tr><td><a name="diff0051" /></td></tr>
774      <tr><td class="lineno" valign="top"></td><td class="lblock">   3.  When If-None-Match is present, evaluate <span class="delete">it:</span></td><td> </td><td class="rblock">   3.  When If-None-Match is present, evaluate <span class="insert">the If-None-Match</span></td><td class="lineno" valign="top"></td></tr>
775      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">       precondition:</span></td><td class="lineno" valign="top"></td></tr>
776      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
777      <tr><td class="lineno" valign="top"></td><td class="left">       *  if true, continue to step 5</td><td> </td><td class="right">       *  if true, continue to step 5</td><td class="lineno" valign="top"></td></tr>
778      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
779      <tr><td class="lineno" valign="top"></td><td class="left">       *  if false for GET/HEAD, respond 304 (Not Modified)</td><td> </td><td class="right">       *  if false for GET/HEAD, respond 304 (Not Modified)</td><td class="lineno" valign="top"></td></tr>
780      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
781      <tr><td class="lineno" valign="top"></td><td class="left">       *  if false for other methods, respond 412 (Precondition Failed)</td><td> </td><td class="right">       *  if false for other methods, respond 412 (Precondition Failed)</td><td class="lineno" valign="top"></td></tr>
782      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
783      <tr><td class="lineno" valign="top"></td><td class="left">   4.  When the method is GET or HEAD, If-None-Match is not present, and</td><td> </td><td class="right">   4.  When the method is GET or HEAD, If-None-Match is not present, and</td><td class="lineno" valign="top"></td></tr>
784      <tr><td><a name="diff0052" /></td></tr>
785      <tr><td class="lineno" valign="top"></td><td class="lblock">       If-Modified-Since is present, evaluate <span class="delete">it:</span></td><td> </td><td class="rblock">       If-Modified-Since is present, evaluate <span class="insert">the If-Modified-Since</span></td><td class="lineno" valign="top"></td></tr>
786      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">       precondition:</span></td><td class="lineno" valign="top"></td></tr>
787      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
788      <tr><td class="lineno" valign="top"></td><td class="left">       *  if true, continue to step 5</td><td> </td><td class="right">       *  if true, continue to step 5</td><td class="lineno" valign="top"></td></tr>
789      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
790      <tr><td class="lineno" valign="top"></td><td class="left">       *  if false, respond 304 (Not Modified)</td><td> </td><td class="right">       *  if false, respond 304 (Not Modified)</td><td class="lineno" valign="top"></td></tr>
791      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
792      <tr><td class="lineno" valign="top"></td><td class="left">   5.  When the method is GET and both Range and If-Range are present,</td><td> </td><td class="right">   5.  When the method is GET and both Range and If-Range are present,</td><td class="lineno" valign="top"></td></tr>
793      <tr><td><a name="diff0053" /></td></tr>
794      <tr><td class="lineno" valign="top"></td><td class="lblock">       evaluate <span class="delete">If-Range</span>:</td><td> </td><td class="rblock">       evaluate <span class="insert">the If-Range precondition</span>:</td><td class="lineno" valign="top"></td></tr>
795      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
796      <tr><td class="lineno" valign="top"></td><td class="left">       *  if the validator matches and the Range specification is</td><td> </td><td class="right">       *  if the validator matches and the Range specification is</td><td class="lineno" valign="top"></td></tr>
797      <tr><td class="lineno" valign="top"></td><td class="left">          applicable to the selected representation, respond 206</td><td> </td><td class="right">          applicable to the selected representation, respond 206</td><td class="lineno" valign="top"></td></tr>
798      <tr><td class="lineno" valign="top"></td><td class="left">          (Partial Content) [Part5]</td><td> </td><td class="right">          (Partial Content) [Part5]</td><td class="lineno" valign="top"></td></tr>
799      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
800      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Otherwise,</td><td> </td><td class="right">   6.  Otherwise,</td><td class="lineno" valign="top"></td></tr>
801      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
802      <tr><td class="lineno" valign="top"></td><td class="left">       *  all conditions are met, so perform the requested action and</td><td> </td><td class="right">       *  all conditions are met, so perform the requested action and</td><td class="lineno" valign="top"></td></tr>
803      <tr><td class="lineno" valign="top"></td><td class="left">          respond according to its success or failure.</td><td> </td><td class="right">          respond according to its success or failure.</td><td class="lineno" valign="top"></td></tr>
804      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
805      <tr><td class="lineno" valign="top"></td><td class="left">   Any extension to HTTP/1.1 that defines additional conditional request</td><td> </td><td class="right">   Any extension to HTTP/1.1 that defines additional conditional request</td><td class="lineno" valign="top"></td></tr>
806      <tr><td class="lineno" valign="top"></td><td class="left">   header fields ought to define its own expectations regarding the</td><td> </td><td class="right">   header fields ought to define its own expectations regarding the</td><td class="lineno" valign="top"></td></tr>
807      <tr><td class="lineno" valign="top"></td><td class="left">   order for evaluating such fields in relation to those defined in this</td><td> </td><td class="right">   order for evaluating such fields in relation to those defined in this</td><td class="lineno" valign="top"></td></tr>
808      <tr><td class="lineno" valign="top"></td><td class="left">   document and other conditionals that might be found in practice.</td><td> </td><td class="right">   document and other conditionals that might be found in practice.</td><td class="lineno" valign="top"></td></tr>
809      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
810      <tr><td><a name="diff0054" /></td></tr>
811      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">6</span>.  IANA Considerations</td><td> </td><td class="rblock"><span class="insert">7</span>.  IANA Considerations</td><td class="lineno" valign="top"></td></tr>
812      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
813      <tr><td><a name="diff0055" /></td></tr>
814      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">6</span>.1.  Status Code Registration</td><td> </td><td class="rblock"><span class="insert">7</span>.1.  Status Code Registration</td><td class="lineno" valign="top"></td></tr>
815      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
816      <tr><td class="lineno" valign="top"></td><td class="left">   The HTTP Status Code Registry located at</td><td> </td><td class="right">   The HTTP Status Code Registry located at</td><td class="lineno" valign="top"></td></tr>
817      <tr><td class="lineno" valign="top"></td><td class="left">   &lt;http://www.iana.org/assignments/http-status-codes&gt; shall be updated</td><td> </td><td class="right">   &lt;http://www.iana.org/assignments/http-status-codes&gt; shall be updated</td><td class="lineno" valign="top"></td></tr>
818      <tr><td class="lineno" valign="top"></td><td class="left">   with the registrations below:</td><td> </td><td class="right">   with the registrations below:</td><td class="lineno" valign="top"></td></tr>
819      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
820      <tr><td class="lineno" valign="top"></td><td class="left">   +-------+---------------------+-------------+</td><td> </td><td class="right">   +-------+---------------------+-------------+</td><td class="lineno" valign="top"></td></tr>
821      <tr><td class="lineno" valign="top"></td><td class="left">   | Value | Description         | Reference   |</td><td> </td><td class="right">   | Value | Description         | Reference   |</td><td class="lineno" valign="top"></td></tr>
822      <tr><td class="lineno" valign="top"></td><td class="left">   +-------+---------------------+-------------+</td><td> </td><td class="right">   +-------+---------------------+-------------+</td><td class="lineno" valign="top"></td></tr>
823      <tr><td class="lineno" valign="top"></td><td class="left">   | 304   | Not Modified        | Section 4.1 |</td><td> </td><td class="right">   | 304   | Not Modified        | Section 4.1 |</td><td class="lineno" valign="top"></td></tr>
824      <tr><td class="lineno" valign="top"></td><td class="left">   | 412   | Precondition Failed | Section 4.2 |</td><td> </td><td class="right">   | 412   | Precondition Failed | Section 4.2 |</td><td class="lineno" valign="top"></td></tr>
825      <tr><td class="lineno" valign="top"></td><td class="left">   +-------+---------------------+-------------+</td><td> </td><td class="right">   +-------+---------------------+-------------+</td><td class="lineno" valign="top"></td></tr>
826      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
827      <tr><td><a name="diff0056" /></td></tr>
828      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">6</span>.2.  Header Field Registration</td><td> </td><td class="rblock"><span class="insert">7</span>.2.  Header Field Registration</td><td class="lineno" valign="top"></td></tr>
829      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
830      <tr><td class="lineno" valign="top"></td><td class="left">   HTTP header fields are registered within the Message Header Field</td><td> </td><td class="right">   HTTP header fields are registered within the Message Header Field</td><td class="lineno" valign="top"></td></tr>
831      <tr><td class="lineno" valign="top"></td><td class="left">   Registry maintained at &lt;http://www.iana.org/assignments/</td><td> </td><td class="right">   Registry maintained at &lt;http://www.iana.org/assignments/</td><td class="lineno" valign="top"></td></tr>
832      <tr><td class="lineno" valign="top"></td><td class="left">   message-headers/message-header-index.html&gt;.</td><td> </td><td class="right">   message-headers/message-header-index.html&gt;.</td><td class="lineno" valign="top"></td></tr>
833      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
834      <tr><td class="lineno" valign="top"></td><td class="left">   This document defines the following HTTP header fields, so their</td><td> </td><td class="right">   This document defines the following HTTP header fields, so their</td><td class="lineno" valign="top"></td></tr>
835      <tr><td class="lineno" valign="top"></td><td class="left">   associated registry entries shall be updated according to the</td><td> </td><td class="right">   associated registry entries shall be updated according to the</td><td class="lineno" valign="top"></td></tr>
836      <tr><td class="lineno" valign="top"></td><td class="left">   permanent registrations below (see [BCP90]):</td><td> </td><td class="right">   permanent registrations below (see [BCP90]):</td><td class="lineno" valign="top"></td></tr>
837      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
838      <tr><td class="lineno" valign="top"></td><td class="left">   +---------------------+----------+----------+-------------+</td><td> </td><td class="right">   +---------------------+----------+----------+-------------+</td><td class="lineno" valign="top"></td></tr>
839      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
840      <tr bgcolor="gray" ><td></td><th><a name="part-l9" /><small>skipping to change at</small><em> page 20, line 49</em></th><th> </th><th><a name="part-r9" /><small>skipping to change at</small><em> page 22, line 19</em></th><td></td></tr>
841      <tr><td class="lineno" valign="top"></td><td class="left">   | If-Match            | http     | standard | Section 3.1 |</td><td> </td><td class="right">   | If-Match            | http     | standard | Section 3.1 |</td><td class="lineno" valign="top"></td></tr>
842      <tr><td class="lineno" valign="top"></td><td class="left">   | If-Modified-Since   | http     | standard | Section 3.3 |</td><td> </td><td class="right">   | If-Modified-Since   | http     | standard | Section 3.3 |</td><td class="lineno" valign="top"></td></tr>
843      <tr><td class="lineno" valign="top"></td><td class="left">   | If-None-Match       | http     | standard | Section 3.2 |</td><td> </td><td class="right">   | If-None-Match       | http     | standard | Section 3.2 |</td><td class="lineno" valign="top"></td></tr>
844      <tr><td class="lineno" valign="top"></td><td class="left">   | If-Unmodified-Since | http     | standard | Section 3.4 |</td><td> </td><td class="right">   | If-Unmodified-Since | http     | standard | Section 3.4 |</td><td class="lineno" valign="top"></td></tr>
845      <tr><td class="lineno" valign="top"></td><td class="left">   | Last-Modified       | http     | standard | Section 2.2 |</td><td> </td><td class="right">   | Last-Modified       | http     | standard | Section 2.2 |</td><td class="lineno" valign="top"></td></tr>
846      <tr><td class="lineno" valign="top"></td><td class="left">   +---------------------+----------+----------+-------------+</td><td> </td><td class="right">   +---------------------+----------+----------+-------------+</td><td class="lineno" valign="top"></td></tr>
847      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
848      <tr><td class="lineno" valign="top"></td><td class="left">   The change controller is: "IETF (iesg@ietf.org) - Internet</td><td> </td><td class="right">   The change controller is: "IETF (iesg@ietf.org) - Internet</td><td class="lineno" valign="top"></td></tr>
849      <tr><td class="lineno" valign="top"></td><td class="left">   Engineering Task Force".</td><td> </td><td class="right">   Engineering Task Force".</td><td class="lineno" valign="top"></td></tr>
850      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
851      <tr><td><a name="diff0057" /></td></tr>
852      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">7</span>.  Security Considerations</td><td> </td><td class="rblock"><span class="insert">8</span>.  Security Considerations</td><td class="lineno" valign="top"></td></tr>
853      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
854      <tr><td class="lineno" valign="top"></td><td class="left">   This section is meant to inform developers, information providers,</td><td> </td><td class="right">   This section is meant to inform developers, information providers,</td><td class="lineno" valign="top"></td></tr>
855      <tr><td class="lineno" valign="top"></td><td class="left">   and users of known security concerns specific to the HTTP/1.1</td><td> </td><td class="right">   and users of known security concerns specific to the HTTP/1.1</td><td class="lineno" valign="top"></td></tr>
856      <tr><td class="lineno" valign="top"></td><td class="left">   conditional request mechanisms.  More general security considerations</td><td> </td><td class="right">   conditional request mechanisms.  More general security considerations</td><td class="lineno" valign="top"></td></tr>
857      <tr><td class="lineno" valign="top"></td><td class="left">   are addressed in HTTP messaging [Part1] and semantics [Part2].</td><td> </td><td class="right">   are addressed in HTTP messaging [Part1] and semantics [Part2].</td><td class="lineno" valign="top"></td></tr>
858      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
859      <tr><td class="lineno" valign="top"></td><td class="left">   The validators defined by this specification are not intended to</td><td> </td><td class="right">   The validators defined by this specification are not intended to</td><td class="lineno" valign="top"></td></tr>
860      <tr><td class="lineno" valign="top"></td><td class="left">   ensure the validity of a representation, guard against malicious</td><td> </td><td class="right">   ensure the validity of a representation, guard against malicious</td><td class="lineno" valign="top"></td></tr>
861      <tr><td class="lineno" valign="top"></td><td class="left">   changes, or detect man-in-the-middle attacks.  At best, they enable</td><td> </td><td class="right">   changes, or detect man-in-the-middle attacks.  At best, they enable</td><td class="lineno" valign="top"></td></tr>
862      <tr><td class="lineno" valign="top"></td><td class="left">   more efficient cache updates and optimistic concurrent writes when</td><td> </td><td class="right">   more efficient cache updates and optimistic concurrent writes when</td><td class="lineno" valign="top"></td></tr>
863      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
864      <tr bgcolor="gray" ><td></td><th><a name="part-l10" /><small>skipping to change at</small><em> page 21, line 27</em></th><th> </th><th><a name="part-r10" /><small>skipping to change at</small><em> page 22, line 46</em></th><td></td></tr>
865      <tr><td class="lineno" valign="top"></td><td class="left">   entity-tag that is unique to the user or user agent, send it in a</td><td> </td><td class="right">   entity-tag that is unique to the user or user agent, send it in a</td><td class="lineno" valign="top"></td></tr>
866      <tr><td class="lineno" valign="top"></td><td class="left">   cacheable response with a long freshness time, and then read that</td><td> </td><td class="right">   cacheable response with a long freshness time, and then read that</td><td class="lineno" valign="top"></td></tr>
867      <tr><td class="lineno" valign="top"></td><td class="left">   entity-tag in later conditional requests as a means of re-identifying</td><td> </td><td class="right">   entity-tag in later conditional requests as a means of re-identifying</td><td class="lineno" valign="top"></td></tr>
868      <tr><td class="lineno" valign="top"></td><td class="left">   that user or user agent.  Such an identifying tag would become a</td><td> </td><td class="right">   that user or user agent.  Such an identifying tag would become a</td><td class="lineno" valign="top"></td></tr>
869      <tr><td class="lineno" valign="top"></td><td class="left">   persistent identifier for as long as the user agent retained the</td><td> </td><td class="right">   persistent identifier for as long as the user agent retained the</td><td class="lineno" valign="top"></td></tr>
870      <tr><td class="lineno" valign="top"></td><td class="left">   original cache entry.  User agents that cache representations ought</td><td> </td><td class="right">   original cache entry.  User agents that cache representations ought</td><td class="lineno" valign="top"></td></tr>
871      <tr><td class="lineno" valign="top"></td><td class="left">   to ensure that the cache is cleared or replaced whenever the user</td><td> </td><td class="right">   to ensure that the cache is cleared or replaced whenever the user</td><td class="lineno" valign="top"></td></tr>
872      <tr><td class="lineno" valign="top"></td><td class="left">   performs privacy-maintaining actions, such as clearing stored cookies</td><td> </td><td class="right">   performs privacy-maintaining actions, such as clearing stored cookies</td><td class="lineno" valign="top"></td></tr>
873      <tr><td class="lineno" valign="top"></td><td class="left">   or changing to a private browsing mode.</td><td> </td><td class="right">   or changing to a private browsing mode.</td><td class="lineno" valign="top"></td></tr>
874      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
875      <tr><td><a name="diff0058" /></td></tr>
876      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">8.</span>  Acknowledgments</td><td> </td><td class="rblock"><span class="insert">9.</span>  Acknowledgments</td><td class="lineno" valign="top"></td></tr>
877      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
878      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">See Section 9 of [Part1].</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
879      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
880      <tr><td><a name="diff0059" /></td></tr>
881      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">9.  References</span></td><td> </td><td class="rblock"><span class="insert">   See Section 10 of [Part1].</span></td><td class="lineno" valign="top"></td></tr>
882      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
883      <tr><td><a name="diff0060" /></td></tr>
884      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">9.1.</span>  Normative References</td><td> </td><td class="rblock"><span class="insert">10.  References</span></td><td class="lineno" valign="top"></td></tr>
885      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">10.1.</span>  Normative References</td><td class="lineno" valign="top"></td></tr>
886      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
887      <tr><td class="lineno" valign="top"></td><td class="left">   [Part1]    Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer</td><td> </td><td class="right">   [Part1]    Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer</td><td class="lineno" valign="top"></td></tr>
888      <tr><td class="lineno" valign="top"></td><td class="left">              Protocol (HTTP/1.1): Message Syntax and Routing",</td><td> </td><td class="right">              Protocol (HTTP/1.1): Message Syntax and Routing",</td><td class="lineno" valign="top"></td></tr>
889      <tr><td><a name="diff0061" /></td></tr>
890      <tr><td class="lineno" valign="top"></td><td class="lblock">              <span class="delete">draft-ietf-httpbis-p1-messaging-23</span> (work in progress),</td><td> </td><td class="rblock">              <span class="insert">draft-ietf-httpbis-p1-messaging-24</span> (work in progress),</td><td class="lineno" valign="top"></td></tr>
891      <tr><td class="lineno" valign="top"></td><td class="lblock">              <span class="delete">July</span> 2013.</td><td> </td><td class="rblock">              <span class="insert">September</span> 2013.</td><td class="lineno" valign="top"></td></tr>
892      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
893      <tr><td class="lineno" valign="top"></td><td class="left">   [Part2]    Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer</td><td> </td><td class="right">   [Part2]    Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer</td><td class="lineno" valign="top"></td></tr>
894      <tr><td class="lineno" valign="top"></td><td class="left">              Protocol (HTTP/1.1): Semantics and Content",</td><td> </td><td class="right">              Protocol (HTTP/1.1): Semantics and Content",</td><td class="lineno" valign="top"></td></tr>
895      <tr><td><a name="diff0062" /></td></tr>
896      <tr><td class="lineno" valign="top"></td><td class="lblock">              <span class="delete">draft-ietf-httpbis-p2-semantics-23</span> (work in progress),</td><td> </td><td class="rblock">              <span class="insert">draft-ietf-httpbis-p2-semantics-24</span> (work in progress),</td><td class="lineno" valign="top"></td></tr>
897      <tr><td class="lineno" valign="top"></td><td class="lblock">              <span class="delete">July</span> 2013.</td><td> </td><td class="rblock">              <span class="insert">September</span> 2013.</td><td class="lineno" valign="top"></td></tr>
898      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
899      <tr><td class="lineno" valign="top"></td><td class="left">   [Part5]    Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed.,</td><td> </td><td class="right">   [Part5]    Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed.,</td><td class="lineno" valign="top"></td></tr>
900      <tr><td class="lineno" valign="top"></td><td class="left">              "Hypertext Transfer Protocol (HTTP/1.1): Range Requests",</td><td> </td><td class="right">              "Hypertext Transfer Protocol (HTTP/1.1): Range Requests",</td><td class="lineno" valign="top"></td></tr>
901      <tr><td><a name="diff0063" /></td></tr>
902      <tr><td class="lineno" valign="top"></td><td class="lblock">              <span class="delete">draft-ietf-httpbis-p5-range-23</span> (work in progress),</td><td> </td><td class="rblock">              <span class="insert">draft-ietf-httpbis-p5-range-24</span> (work in progress),</td><td class="lineno" valign="top"></td></tr>
903      <tr><td class="lineno" valign="top"></td><td class="lblock">              <span class="delete">July</span> 2013.</td><td> </td><td class="rblock">              <span class="insert">September</span> 2013.</td><td class="lineno" valign="top"></td></tr>
904      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
905      <tr><td class="lineno" valign="top"></td><td class="left">   [Part6]    Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,</td><td> </td><td class="right">   [Part6]    Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,</td><td class="lineno" valign="top"></td></tr>
906      <tr><td class="lineno" valign="top"></td><td class="left">              Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching",</td><td> </td><td class="right">              Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching",</td><td class="lineno" valign="top"></td></tr>
907      <tr><td><a name="diff0064" /></td></tr>
908      <tr><td class="lineno" valign="top"></td><td class="lblock">              <span class="delete">draft-ietf-httpbis-p6-cache-23</span> (work in progress),</td><td> </td><td class="rblock">              <span class="insert">draft-ietf-httpbis-p6-cache-24</span> (work in progress),</td><td class="lineno" valign="top"></td></tr>
909      <tr><td class="lineno" valign="top"></td><td class="lblock">              <span class="delete">July</span> 2013.</td><td> </td><td class="rblock">              <span class="insert">September</span> 2013.</td><td class="lineno" valign="top"></td></tr>
910      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
911      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate</td><td> </td><td class="right">   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate</td><td class="lineno" valign="top"></td></tr>
912      <tr><td class="lineno" valign="top"></td><td class="left">              Requirement Levels", BCP 14, RFC 2119, March 1997.</td><td> </td><td class="right">              Requirement Levels", BCP 14, RFC 2119, March 1997.</td><td class="lineno" valign="top"></td></tr>
913      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
914      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC5234]  Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax</td><td> </td><td class="right">   [RFC5234]  Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax</td><td class="lineno" valign="top"></td></tr>
915      <tr><td class="lineno" valign="top"></td><td class="left">              Specifications: ABNF", STD 68, RFC 5234, January 2008.</td><td> </td><td class="right">              Specifications: ABNF", STD 68, RFC 5234, January 2008.</td><td class="lineno" valign="top"></td></tr>
916      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
917      <tr><td><a name="diff0065" /></td></tr>
918      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">9</span>.2.  Informative References</td><td> </td><td class="rblock"><span class="insert">10</span>.2.  Informative References</td><td class="lineno" valign="top"></td></tr>
919      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
920      <tr><td class="lineno" valign="top"></td><td class="left">   [BCP90]    Klyne, G., Nottingham, M., and J. Mogul, "Registration</td><td> </td><td class="right">   [BCP90]    Klyne, G., Nottingham, M., and J. Mogul, "Registration</td><td class="lineno" valign="top"></td></tr>
921      <tr><td class="lineno" valign="top"></td><td class="left">              Procedures for Message Header Fields", BCP 90, RFC 3864,</td><td> </td><td class="right">              Procedures for Message Header Fields", BCP 90, RFC 3864,</td><td class="lineno" valign="top"></td></tr>
922      <tr><td class="lineno" valign="top"></td><td class="left">              September 2004.</td><td> </td><td class="right">              September 2004.</td><td class="lineno" valign="top"></td></tr>
923      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
924      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,</td><td> </td><td class="right">   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,</td><td class="lineno" valign="top"></td></tr>
925      <tr><td class="lineno" valign="top"></td><td class="left">              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext</td><td> </td><td class="right">              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext</td><td class="lineno" valign="top"></td></tr>
926      <tr><td class="lineno" valign="top"></td><td class="left">              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.</td><td> </td><td class="right">              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.</td><td class="lineno" valign="top"></td></tr>
927      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
928      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC4918]  Dusseault, L., Ed., "HTTP Extensions for Web Distributed</td><td> </td><td class="right">   [RFC4918]  Dusseault, L., Ed., "HTTP Extensions for Web Distributed</td><td class="lineno" valign="top"></td></tr>
929      <tr><td class="lineno" valign="top"></td><td class="left">              Authoring and Versioning (WebDAV)", RFC 4918, June 2007.</td><td> </td><td class="right">              Authoring and Versioning (WebDAV)", RFC 4918, June 2007.</td><td class="lineno" valign="top"></td></tr>
930      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
931      <tr><td class="lineno" valign="top"></td><td class="left">Appendix A.  Changes from RFC 2616</td><td> </td><td class="right">Appendix A.  Changes from RFC 2616</td><td class="lineno" valign="top"></td></tr>
932      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
933      <tr><td class="lineno" valign="top"></td><td class="left">   The definition of validator weakness has been expanded and clarified.</td><td> </td><td class="right">   The definition of validator weakness has been expanded and clarified.</td><td class="lineno" valign="top"></td></tr>
934      <tr><td class="lineno" valign="top"></td><td class="left">   (Section 2.1)</td><td> </td><td class="right">   (Section 2.1)</td><td class="lineno" valign="top"></td></tr>
935      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
936      <tr><td class="lineno" valign="top"></td><td class="left">   Weak entity-tags are now allowed in all requests except range</td><td> </td><td class="right">   Weak entity-tags are now allowed in all requests except range</td><td class="lineno" valign="top"></td></tr>
937      <tr><td><a name="diff0066" /></td></tr>
938      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">requests</span> (Sections 2.1 and <span class="delete">3.2).</span></td><td> </td><td class="rblock">   <span class="insert">requests.</span>  (Sections 2.1 and <span class="insert">3.2)</span></td><td class="lineno" valign="top"></td></tr>
939      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
940      <tr><td class="lineno" valign="top"></td><td class="left">   The ETag header field ABNF has been changed to not use quoted-string,</td><td> </td><td class="right">   The ETag header field ABNF has been changed to not use quoted-string,</td><td class="lineno" valign="top"></td></tr>
941      <tr><td class="lineno" valign="top"></td><td class="left">   thus avoiding escaping issues.  (Section 2.3)</td><td> </td><td class="right">   thus avoiding escaping issues.  (Section 2.3)</td><td class="lineno" valign="top"></td></tr>
942      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
943      <tr><td class="lineno" valign="top"></td><td class="left">   ETag is defined to provide an entity tag for the selected</td><td> </td><td class="right">   ETag is defined to provide an entity tag for the selected</td><td class="lineno" valign="top"></td></tr>
944      <tr><td class="lineno" valign="top"></td><td class="left">   representation, thereby clarifying what it applies to in various</td><td> </td><td class="right">   representation, thereby clarifying what it applies to in various</td><td class="lineno" valign="top"></td></tr>
945      <tr><td class="lineno" valign="top"></td><td class="left">   situations (such as a PUT response).  (Section 2.3)</td><td> </td><td class="right">   situations (such as a PUT response).  (Section 2.3)</td><td class="lineno" valign="top"></td></tr>
946      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
947      <tr><td class="lineno" valign="top"></td><td class="left">   The precedence for evaluation of conditional requests has been</td><td> </td><td class="right">   The precedence for evaluation of conditional requests has been</td><td class="lineno" valign="top"></td></tr>
948      <tr><td><a name="diff0067" /></td></tr>
949      <tr><td class="lineno" valign="top"></td><td class="lblock">   defined.  (Section <span class="delete">5</span>)</td><td> </td><td class="rblock">   defined.  (Section <span class="insert">6</span>)</td><td class="lineno" valign="top"></td></tr>
950      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
951      <tr><td class="lineno" valign="top"></td><td class="left">Appendix B.  Imported ABNF</td><td> </td><td class="right">Appendix B.  Imported ABNF</td><td class="lineno" valign="top"></td></tr>
952      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
953      <tr><td class="lineno" valign="top"></td><td class="left">   The following core rules are included by reference, as defined in</td><td> </td><td class="right">   The following core rules are included by reference, as defined in</td><td class="lineno" valign="top"></td></tr>
954      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix B.1 of [RFC5234]: ALPHA (letters), CR (carriage return),</td><td> </td><td class="right">   Appendix B.1 of [RFC5234]: ALPHA (letters), CR (carriage return),</td><td class="lineno" valign="top"></td></tr>
955      <tr><td class="lineno" valign="top"></td><td class="left">   CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double</td><td> </td><td class="right">   CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double</td><td class="lineno" valign="top"></td></tr>
956      <tr><td class="lineno" valign="top"></td><td class="left">   quote), HEXDIG (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any</td><td> </td><td class="right">   quote), HEXDIG (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any</td><td class="lineno" valign="top"></td></tr>
957      <tr><td class="lineno" valign="top"></td><td class="left">   8-bit sequence of data), SP (space), and VCHAR (any visible US-ASCII</td><td> </td><td class="right">   8-bit sequence of data), SP (space), and VCHAR (any visible US-ASCII</td><td class="lineno" valign="top"></td></tr>
958      <tr><td class="lineno" valign="top"></td><td class="left">   character).</td><td> </td><td class="right">   character).</td><td class="lineno" valign="top"></td></tr>
959      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
960      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
961      <tr bgcolor="gray" ><td></td><th><a name="part-l11" /><small>skipping to change at</small><em> page 25, line 29</em></th><th> </th><th><a name="part-r11" /><small>skipping to change at</small><em> page 27, line 13</em></th><td></td></tr>
962      <tr><td class="lineno" valign="top"></td><td class="left">      expansion in ABNF appendices"</td><td> </td><td class="right">      expansion in ABNF appendices"</td><td class="lineno" valign="top"></td></tr>
963      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
964      <tr><td class="lineno" valign="top"></td><td class="left">   o  &lt;http://tools.ietf.org/wg/httpbis/trac/ticket/437&gt;: "incorrect</td><td> </td><td class="right">   o  &lt;http://tools.ietf.org/wg/httpbis/trac/ticket/437&gt;: "incorrect</td><td class="lineno" valign="top"></td></tr>
965      <tr><td class="lineno" valign="top"></td><td class="left">      example dates"</td><td> </td><td class="right">      example dates"</td><td class="lineno" valign="top"></td></tr>
966      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
967      <tr><td class="lineno" valign="top"></td><td class="left">   Partly resolved issues:</td><td> </td><td class="right">   Partly resolved issues:</td><td class="lineno" valign="top"></td></tr>
968      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
969      <tr><td class="lineno" valign="top"></td><td class="left">   o  &lt;http://tools.ietf.org/wg/httpbis/trac/ticket/461&gt;: "Editorial</td><td> </td><td class="right">   o  &lt;http://tools.ietf.org/wg/httpbis/trac/ticket/461&gt;: "Editorial</td><td class="lineno" valign="top"></td></tr>
970      <tr><td class="lineno" valign="top"></td><td class="left">      suggestions"</td><td> </td><td class="right">      suggestions"</td><td class="lineno" valign="top"></td></tr>
971      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
972      <tr><td><a name="diff0068" /></td></tr>
973      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">D.5.  Since draft-ietf-httpbis-p4-conditional-23</span></td><td class="lineno" valign="top"></td></tr>
974      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
975      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Closed issues:</span></td><td class="lineno" valign="top"></td></tr>
976      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
977      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   o  &lt;http://tools.ietf.org/wg/httpbis/trac/ticket/455&gt;: "PUT + If-</span></td><td class="lineno" valign="top"></td></tr>
978      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Match over-constrained?"</span></td><td class="lineno" valign="top"></td></tr>
979      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
980      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   o  &lt;http://tools.ietf.org/wg/httpbis/trac/ticket/479&gt;: "MUSTs and</span></td><td class="lineno" valign="top"></td></tr>
981      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      other feedback"</span></td><td class="lineno" valign="top"></td></tr>
982      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
983      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   o  &lt;http://tools.ietf.org/wg/httpbis/trac/ticket/495&gt;: "p4 editorial</span></td><td class="lineno" valign="top"></td></tr>
984      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      nits"</span></td><td class="lineno" valign="top"></td></tr>
985      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
986      <tr><td class="lineno" valign="top"></td><td class="left">Index</td><td> </td><td class="right">Index</td><td class="lineno" valign="top"></td></tr>
987      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
988      <tr><td class="lineno" valign="top"></td><td class="left">   3</td><td> </td><td class="right">   3</td><td class="lineno" valign="top"></td></tr>
989      <tr><td><a name="diff0069" /></td></tr>
990      <tr><td class="lineno" valign="top"></td><td class="lblock">      304 Not Modified (status code)  1<span class="delete">7</span></td><td> </td><td class="rblock">      304 Not Modified (status code)  1<span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
991      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
992      <tr><td class="lineno" valign="top"></td><td class="left">   4</td><td> </td><td class="right">   4</td><td class="lineno" valign="top"></td></tr>
993      <tr><td><a name="diff0070" /></td></tr>
994      <tr><td class="lineno" valign="top"></td><td class="lblock">      412 Precondition Failed (status code)  1<span class="delete">7</span></td><td> </td><td class="rblock">      412 Precondition Failed (status code)  1<span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
995      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
996      <tr><td class="lineno" valign="top"></td><td class="left">   E</td><td> </td><td class="right">   E</td><td class="lineno" valign="top"></td></tr>
997      <tr><td class="lineno" valign="top"></td><td class="left">      ETag header field  9</td><td> </td><td class="right">      ETag header field  9</td><td class="lineno" valign="top"></td></tr>
998      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
999      <tr><td class="lineno" valign="top"></td><td class="left">   G</td><td> </td><td class="right">   G</td><td class="lineno" valign="top"></td></tr>
1000      <tr><td class="lineno" valign="top"></td><td class="left">      Grammar</td><td> </td><td class="right">      Grammar</td><td class="lineno" valign="top"></td></tr>
1001      <tr><td class="lineno" valign="top"></td><td class="left">         entity-tag  9</td><td> </td><td class="right">         entity-tag  9</td><td class="lineno" valign="top"></td></tr>
1002      <tr><td class="lineno" valign="top"></td><td class="left">         ETag  9</td><td> </td><td class="right">         ETag  9</td><td class="lineno" valign="top"></td></tr>
1003      <tr><td class="lineno" valign="top"></td><td class="left">         etagc  9</td><td> </td><td class="right">         etagc  9</td><td class="lineno" valign="top"></td></tr>
1004      <tr><td class="lineno" valign="top"></td><td class="left">         If-Match  13</td><td> </td><td class="right">         If-Match  13</td><td class="lineno" valign="top"></td></tr>
1005
1006     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
1007     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 70 change blocks.&nbsp;</a></th></tr>
1008     <tr class="stats"><td></td><th><i>239 lines changed or deleted</i></th><th><i> </i></th><th><i>308 lines changed or added</i></th><td></td></tr>
1009     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.38. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
1010   </table>
1011   </body>
1012   </html>
Note: See TracBrowser for help on using the repository browser.