Source: https://trac.ietf.org/trac/httpbis/browser/draft-ietf-httpbis/diffs/draft-ietf-httpbis-p5-range-01-from-0.diff.html?annotate=blame&rev=1391
Timestamp: 2020-01-23 23:09:04
Document Index: 63464206

Matched Legal Cases: ['art4', 'art4', 'art4', 'art 4', 'art 4', 'art6', 'art 6', 'art1', 'art3', 'art6']

draft-ietf-httpbis-p5-range-01-from-0.diff.html in draft-ietf-httpbis/diffs – Hypertext Transfer Protocol Wiki
source: draft-ietf-httpbis/diffs/draft-ietf-httpbis-p5-range-01-from-0.diff.html @ 1391
<title>Diff: draft-ietf-httpbis-p5-range-00.txt - draft-ietf-httpbis-p5-range-01.txt</title>
<tr bgcolor="orange"><th></th><th>&nbsp;draft-ietf-httpbis-p5-range-00.txt&nbsp;</th><th> </th><th>&nbsp;draft-ietf-httpbis-p5-range-01.txt&nbsp;</th><th></th></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> draft-ietf-httpbis-p5-range-0<span class="delete">0</span></td><td> </td><td class="rblock"> draft-ietf-httpbis-p5-range-0<span class="insert">1</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2. Range Units . . . . . . . . . . . . . . . . . . . . . . . . . 4</td><td> </td><td class="right"> 2. Range Units . . . . . . . . . . . . . . . . . . . . . . . . . 4</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 3.1. 206 Partial Content . . . . . . . . . . . . . . . . . . . <span class="delete">4</span></td><td> </td><td class="rblock"> 3.1. 206 Partial Content . . . . . . . . . . . . . . . . . . . <span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 3.2. 416 Requested Range Not Satisfiable . . . . . . . . . . . <span class="delete">5</span></td><td> </td><td class="rblock"> 3.2. 416 Requested Range Not Satisfiable . . . . . . . . . . . <span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 4. Combining Byte Ranges . . . . . . . . . . . . . . . . . . . . <span class="delete">5</span></td><td> </td><td class="rblock"> 4. Combining Byte Ranges . . . . . . . . . . . . . . . . . . . . <span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 5. Header Field Definitions . . . . . . . . . . . . . . . . . . . 6</td><td> </td><td class="right"> 5. Header Field Definitions . . . . . . . . . . . . . . . . . . . 6</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 5.1. Accept-Ranges . . . . . . . . . . . . . . . . . . . . . . <span class="delete">6</span></td><td> </td><td class="rblock"> 5.1. Accept-Ranges . . . . . . . . . . . . . . . . . . . . . . <span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 5.2. Content-Range . . . . . . . . . . . . . . . . . . . . . . 7</td><td> </td><td class="right"> 5.2. Content-Range . . . . . . . . . . . . . . . . . . . . . . 7</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 5.3. If-Range . . . . . . . . . . . . . . . . . . . . . . . . . 9</td><td> </td><td class="right"> 5.3. If-Range . . . . . . . . . . . . . . . . . . . . . . . . . 9</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 5.4. Range . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">9</span></td><td> </td><td class="rblock"> 5.4. Range . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">10</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 5.4.1. Byte Ranges . . . . . . . . . . . . . . . . . . . . . <span class="delete">9</span></td><td> </td><td class="rblock"> 5.4.1. Byte Ranges . . . . . . . . . . . . . . . . . . . . . <span class="insert">10</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 5.4.2. Range Retrieval Requests . . . . . . . . . . . . . . . <span class="delete">11</span></td><td> </td><td class="rblock"> 5.4.2. Range Retrieval Requests . . . . . . . . . . . . . . . <span class="insert">12</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12</td><td> </td><td class="right"> 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 7. Security Considerations . . . . . . . . . . . . . . . . . . . <span class="delete">12</span></td><td> </td><td class="rblock"> 7. Security Considerations . . . . . . . . . . . . . . . . . . . <span class="insert">13</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">12</span></td><td> </td><td class="rblock"> 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">13</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">12</span></td><td> </td><td class="rblock"> 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">13</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Appendix A. Internet Media Type multipart/byteranges . . . . . . <span class="delete">13</span></td><td> </td><td class="rblock"><span class="insert"> 9.1. Normative References . . . . . . . . . . . . . . . . . . . 13</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Appendix B. Changes from RFC 2068 . . . . . . . . . . . . . . . . <span class="delete">14</span></td><td> </td><td class="rblock"><span class="insert"> 9.2. Informative References . . . . . . . . . . . . . . . . . . 14</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">15</span></td><td> </td><td class="rblock"> Appendix A. Internet Media Type multipart/byteranges . . . . . . <span class="insert">14</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">16</span></td><td> </td><td class="rblock"> Appendix B. <span class="insert">Compatibility with Previous Versions . . . . . . . . 15</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Intellectual Property and Copyright Statements . . . . . . . . . . <span class="delete">18</span></td><td> </td><td class="rblock"><span class="insert"> B.1.</span> Changes from RFC 2068 . . . . . . . . . . . . . . . . <span class="insert">. . 15</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> B.2. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 16</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> Appendix C. Change Log (to be removed by RFC Editor before</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> publication) . . . . . . . . . . . . . . . . . . . . 16</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> C.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 16</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> C.2. Since draft-ietf-httpbis-p5-range-00 . . . . . . . . . . . 16</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">16</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">18</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> Intellectual Property and Copyright Statements . . . . . . . . . . <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">This</span> document <span class="delete">will define aspects</span> of <span class="delete">HTTP related</span> to range requests,</td><td> </td><td class="rblock"> <span class="insert">HTTP clients often encounter interrupted data transfers as a result</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> partial responses, and the multipart/byteranges media type. <span class="delete">Right</span></td><td> </td><td class="rblock"><span class="insert"> of cancelled requests or dropped connections. When a cache has</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> now</span> it only <span class="delete">includes</span> the <span class="delete">extracted relevant sections of RFC 2616</span></td><td> </td><td class="rblock"><span class="insert"> stored a partial representation, it is desirable to request the</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> [RFC2616] without edit.</span></td><td> </td><td class="rblock"><span class="insert"> remainder of that representation in a subsequent request rather than</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> transfer the entire representation. There are also a number of Web</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> applications that benefit from being able to request only a subset of</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> a larger representation, such as a single page of a very large</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> document <span class="insert">or only part</span> of <span class="insert">an image</span> to <span class="insert">be rendered by a device with</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> limited local storage.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> This document defines HTTP/1.1</span> range requests, partial responses, and</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> the multipart/byteranges media type. <span class="insert">The protocol for range requests</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> is an OPTIONAL feature of HTTP, designed so resources or recipients</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> that do not implement this feature can respond as if</span> it <span class="insert">is a normal</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> GET request without impacting interoperability. Partial responses</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> are indicated by a distinct status code to not be mistaken for full</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> responses by intermediate caches that might not implement the</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> feature.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> Although the HTTP range request mechanism is designed to allow for</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> extensible range types, this specification</span> only <span class="insert">defines requests for</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> byte ranges.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> of</span> the <span class="insert">MUST or REQUIRED level requirements for the protocols it</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> range-unit = bytes-unit | other-range-unit</td><td> </td><td class="right"> range-unit = bytes-unit | other-range-unit</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 5, line 4</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 5, line 34</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o Either a Content-Range header field (Section 5.2) indicating the</td><td> </td><td class="right"> o Either a Content-Range header field (Section 5.2) indicating the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> range included with this response, or a multipart/byteranges</td><td> </td><td class="right"> range included with this response, or a multipart/byteranges</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Content-Type including Content-Range fields for each part. If a</td><td> </td><td class="right"> Content-Type including Content-Range fields for each part. If a</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Content-Length header field is present in the response, its value</td><td> </td><td class="right"> Content-Length header field is present in the response, its value</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> MUST match the actual number of OCTETs transmitted in the message-</td><td> </td><td class="right"> MUST match the actual number of OCTETs transmitted in the message-</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> body.</td><td> </td><td class="right"> body.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o Date</td><td> </td><td class="right"> o Date</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> If the 206 response is the result of an If-Range <span class="delete">request that used a</span></td><td> </td><td class="rblock"> If the 206 response is the result of an If-Range <span class="insert">request,</span> the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> strong cache validator (see Section 4 of [Part4]),</span> the response</td><td> </td><td class="rblock"> response SHOULD NOT include other entity-headers. Otherwise, the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> SHOULD NOT include other entity-headers. <span class="delete">If the response is the</span></td><td> </td><td class="rblock"> response MUST include all of the entity-headers that would have been</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> result of an If-Range request that used a weak validator, the</span></td><td> </td><td class="rblock"> returned with a 200 (OK) response to the same request.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> response MUST NOT include other entity-headers; this prevents</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> inconsistencies between cached entity-bodies and updated headers.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Otherwise, the response MUST include all of the entity-headers that</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> would have been returned with a 200 (OK) response to the same</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> see 4.</td><td> </td><td class="rblock"> see <span class="insert">Section </span>4.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> MUST NOT cache 206 (Partial) responses.</td><td> </td><td class="rblock"> MUST NOT cache 206 (Partial<span class="insert"> Content</span>) responses.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> range-specifier values in this field overlap the current extent of</td><td> </td><td class="right"> range-specifier values in this field overlap the current extent of</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 6, line 23</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 6, line 48</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> function (see Section 4 of [Part4]).</td><td> </td><td class="right"> function (see Section 4 of [Part4]).</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> If either requirement is not met, the cache MUST use only the most</td><td> </td><td class="right"> If either requirement is not met, the cache MUST use only the most</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> recent partial response (based on the Date values transmitted with</td><td> </td><td class="right"> recent partial response (based on the Date values transmitted with</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> every response, and using the incoming response if these values are</td><td> </td><td class="right"> every response, and using the incoming response if these values are</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> equal or missing), and MUST discard the other partial information.</td><td> </td><td class="right"> equal or missing), and MUST discard the other partial information.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">5. Header Field Definitions</td><td> </td><td class="right">5. Header Field Definitions</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> HTTP/1.1 header <span class="delete">fields.</span> For entity-header fields, both sender and</td><td> </td><td class="rblock"> <span class="insert">fields related to range requests and partial responses.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The Accept-Ranges response-header field allows the server to indicate</td><td> </td><td class="right"> The Accept-Ranges response-header field allows the server to indicate</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> its acceptance of range requests for a resource:</td><td> </td><td class="right"> its acceptance of range requests for a resource:</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Accept-Ranges = "Accept-Ranges" ":" acceptable-ranges</td><td> </td><td class="right"> Accept-Ranges = "Accept-Ranges" ":" acceptable-ranges</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> acceptable-ranges = 1#range-unit | "none"</td><td> </td><td class="right"> acceptable-ranges = 1#range-unit | "none"</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 8, line 22</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 8, line 48</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> transmitted with a Content-Range header, and a Content-Length header</td><td> </td><td class="right"> transmitted with a Content-Range header, and a Content-Length header</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> showing the number of bytes actually transferred. For example,</td><td> </td><td class="right"> showing the number of bytes actually transferred. For example,</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> HTTP/1.1 206 Partial <span class="delete">c</span>ontent</td><td> </td><td class="rblock"> HTTP/1.1 206 Partial <span class="insert">C</span>ontent</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> ranges), these are transmitted as a multipart message. The multipart</td><td> </td><td class="right"> ranges), these are transmitted as a multipart message. The multipart</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> in Appendix A. See Appendix B for a compatibility issue.</td><td> </td><td class="rblock"> in Appendix A. See Appendix B<span class="insert">.1</span> for a compatibility issue.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> decode a multipart/byteranges message MUST NOT ask for multiple byte-</td><td> </td><td class="right"> decode a multipart/byteranges message MUST NOT ask for multiple byte-</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> When a client requests multiple byte-ranges in one request, the</td><td> </td><td class="right"> When a client requests multiple byte-ranges in one request, the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> server SHOULD return them in the order that they appeared in the</td><td> </td><td class="right"> server SHOULD return them in the order that they appeared in the</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 9, line 42</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 10, line 19</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> entity tag for the entity, then the server SHOULD provide the</td><td> </td><td class="right"> entity tag for the entity, then the server SHOULD provide the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> specified sub-range of the entity using a 206 (Partial <span class="delete">c</span>ontent)</td><td> </td><td class="rblock"> specified sub-range of the entity using a 206 (Partial <span class="insert">C</span>ontent)</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> response. If the entity tag does not match, then the server SHOULD</td><td> </td><td class="right"> response. If the entity tag does not match, then the server SHOULD</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> return the entire entity using a 200 (OK) response.</td><td> </td><td class="right"> return the entire entity using a 200 (OK) response.</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 12, line 35</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 13, line 14</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">7. Security Considerations</td><td> </td><td class="right">7. Security Considerations</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">8. Acknowledgments</td><td> </td><td class="right">8. Acknowledgments</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Most of the specification of ranges is based on work originally done</td><td> </td><td class="right"> Most of the specification of ranges is based on work originally done</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> by Ari Luotonen and John Franks, with additional input from Steve</td><td> </td><td class="right"> by Ari Luotonen and John Franks, with additional input from Steve</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">Zilles.</span></td><td> </td><td class="rblock"> <span class="insert">Zilles, Daniel W. Connolly, Roy T. Fielding, Jim Gettys, Martin</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"><span class="insert"> Hamilton, Koen Holtman, Shel Kaplan, Paul Leach, Alex Lopez-Ortiz,</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> Based on an XML translation of RFC 2616 by Julian Reschke.</span></td><td> </td><td class="rblock"><span class="insert"> Larry Masinter, Jeff Mogul, Lou Montulli, David W. Morris, Luigi</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> Rizzo, and Bill Weihl.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">9.1. Normative References</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">December 2007.</span></td><td> </td><td class="rblock"><span class="insert"> (work in progress), January 2008.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> and Content Negotiation", draft-ietf-httpbis-p3-payload-01</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> (work in progress), <span class="insert">January 2008.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> part 4: Conditional Requests",</td><td> </td><td class="rblock"><span class="insert"> and J. Reschke, Ed.,</span> "HTTP/1.1, part 4: Conditional</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">draft-ietf-httpbis-p4-conditional-00</span> (work in progress),</td><td> </td><td class="rblock"> Requests", <span class="insert">draft-ietf-httpbis-p4-conditional-01 (work in</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">December 2007.</span></td><td> </td><td class="rblock"><span class="insert"> progress), January 2008.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> [Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> and J. Reschke, Ed., "HTTP/1.1, part 6: Caching",</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> draft-ietf-httpbis-p6-cache-01</span> (work in progress),</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> <span class="insert">[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">9.2. Informative References</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> body. The media type for this purpose is called "multipart/</td><td> </td><td class="right"> body. The media type for this purpose is called "multipart/</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 14, line 28</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 15, line 28</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 2. Although <span class="delete">RFC 2046</span> [RFC2046] permits the boundary string to be</td><td> </td><td class="rblock"> 2. Although [RFC2046] permits the boundary string to be quoted, some</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> quoted, some existing implementations handle a quoted boundary</td><td> </td><td class="rblock"> existing implementations handle a quoted boundary string</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> string incorrectly.</td><td> </td><td class="rblock"> incorrectly.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3. A number of browsers and servers were coded to an early draft of</td><td> </td><td class="right"> 3. A number of browsers and servers were coded to an early draft of</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> the byteranges specification to use a media type of multipart/</td><td> </td><td class="right"> the byteranges specification to use a media type of multipart/</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> x-byteranges, which is almost, but not quite compatible with the</td><td> </td><td class="right"> x-byteranges, which is almost, but not quite compatible with the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> version documented in HTTP/1.1.</td><td> </td><td class="right"> version documented in HTTP/1.1.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock">Appendix B. Changes from RFC 2068</td><td> </td><td class="rblock">Appendix B. <span class="insert">Compatibility with Previous Versions</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">B.1.</span> Changes from RFC 2068</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> <span class="insert">Transfer-coding and message lengths all interact in ways that</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> required fixing exactly when chunked encoding is used (to allow for</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> transfer encoding that may not be self delimiting); it was important</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> to straighten out exactly how message lengths are computed.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> (Section 5.2, see also [Part1], [Part3] and [Part6])</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> There are situations where a server (especially a proxy) does not</td><td> </td><td class="right"> There are situations where a server (especially a proxy) does not</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> know the full length of a response but is capable of serving a</td><td> </td><td class="right"> know the full length of a response but is capable of serving a</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> byterange request. We therefore need a mechanism to allow byteranges</td><td> </td><td class="right"> byterange request. We therefore need a mechanism to allow byteranges</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> with a content-range not indicating the full length of the message.</td><td> </td><td class="right"> with a content-range not indicating the full length of the message.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> (Section 5.2)</td><td> </td><td class="right"> (Section 5.2)</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> headers in a 206 response, this problem can be avoided.</td><td> </td><td class="rblock"> headers in a 206 response, this problem can be avoided. <span class="insert">(Section 3.1</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> and 5.3)</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Fix problem with unsatisfiable range requests; there are two cases:</td><td> </td><td class="right"> Fix problem with unsatisfiable range requests; there are two cases:</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> contents of a document. (Section 3.2, 5.2)</td><td> </td><td class="right"> contents of a document. (Section 3.2, 5.2)</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">B.2. Changes from RFC 2616</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> Clarify that it is not ok to use a weak cache validator in a 206</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> response. (Section 3.1)</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">C.1. Since RFC2616</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">C.2. Since draft-ietf-httpbis-p5-range-00</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> o &lt;http://www3.tools.ietf.org/wg/httpbis/trac/ticket/18&gt;: "Cache</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> validators in 206 responses"</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> (&lt;http://purl.org/NET/http-errata#ifrange206&gt;)</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> o &lt;http://www3.tools.ietf.org/wg/httpbis/trac/ticket/86&gt;: "Normative</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> up-to-date references"</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 206 Partial Content (status code) <span class="delete">4</span></td><td> </td><td class="rblock"> 206 Partial Content (status code) <span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 416 Requested Range Not Satisfiable (status code) <span class="delete">5</span></td><td> </td><td class="rblock"> 416 Requested Range Not Satisfiable (status code) <span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Accept-Ranges header <span class="delete">6</span></td><td> </td><td class="rblock"> Accept-Ranges header <span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Content-Range header 7</td><td> </td><td class="right"> Content-Range header 7</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Accept-Ranges <span class="delete">6</span></td><td> </td><td class="rblock"> Accept-Ranges <span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> acceptable-ranges <span class="delete">6</span></td><td> </td><td class="rblock"> acceptable-ranges <span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> byte-content-range-spec 7</td><td> </td><td class="right"> byte-content-range-spec 7</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> byte-range-resp-spec 7</td><td> </td><td class="right"> byte-range-resp-spec 7</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> byte-range-set 10</td><td> </td><td class="right"> byte-range-set 10</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> byte-range-spec 10</td><td> </td><td class="right"> byte-range-spec 10</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> byte-ranges-specifier 10</td><td> </td><td class="right"> byte-ranges-specifier 10</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> bytes-unit <span class="delete">4</span></td><td> </td><td class="rblock"> bytes-unit <span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Content-Range 7</td><td> </td><td class="right"> Content-Range 7</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> content-range-spec 7</td><td> </td><td class="right"> content-range-spec 7</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> first-byte-pos 10</td><td> </td><td class="right"> first-byte-pos 10</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> If-Range <span class="delete">9</span></td><td> </td><td class="rblock"> If-Range <span class="insert">10</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> instance-length 7</td><td> </td><td class="right"> instance-length 7</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> last-byte-pos 10</td><td> </td><td class="right"> last-byte-pos 10</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> other-range-unit <span class="delete">4</span></td><td> </td><td class="rblock"> other-range-unit <span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Range <span class="delete">11</span></td><td> </td><td class="rblock"> Range <span class="insert">12</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> range-unit <span class="delete">4</span></td><td> </td><td class="rblock"> range-unit <span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> ranges-specifier 10</td><td> </td><td class="right"> ranges-specifier 10</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> suffix-byte-range-spec <span class="delete">10</span></td><td> </td><td class="rblock"> suffix-byte-range-spec <span class="insert">11</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> suffix-length <span class="delete">10</span></td><td> </td><td class="rblock"> suffix-length <span class="insert">11</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> If-Range 9</td><td> </td><td class="right"> If-Range 9</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Range <span class="delete">9</span></td><td> </td><td class="rblock"> Range <span class="insert">10</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> If-Range header 9</td><td> </td><td class="right"> If-Range header 9</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> multipart/byteranges <span class="delete">13</span></td><td> </td><td class="rblock"> multipart/byteranges 14</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> multipart/x-byteranges</span> 14</td><td> </td><td class="rblock"> <span class="insert">multipart/x-byteranges 15</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> multipart/byteranges Media Type <span class="delete">13</span></td><td> </td><td class="rblock"> multipart/byteranges Media Type <span class="insert">14</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> multipart/x-byteranges Media Type <span class="delete">14</span></td><td> </td><td class="rblock"> multipart/x-byteranges Media Type <span class="insert">15</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Range header <span class="delete">9</span></td><td> </td><td class="rblock"> Range header <span class="insert">10</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 206 Partial Content <span class="delete">4</span></td><td> </td><td class="rblock"> 206 Partial Content <span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 416 Requested Range Not Satisfiable <span class="delete">5</span></td><td> </td><td class="rblock"> 416 Requested Range Not Satisfiable <span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l9" /><small>skipping to change at</small><em> page 18, line 5</em></th><th> </th><th><a name="part-r9" /><small>skipping to change at</small><em> page 19, line 31</em></th><td></td></tr>
<tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 47 change blocks.&nbsp;</a></th></tr>
<tr class="stats"><td></td><th><i>101 lines changed or deleted</i></th><th><i> </i></th><th><i>212 lines changed or added</i></th><td></td></tr>