Skip to content

Instantly share code, notes, and snippets.

@reschke
Created July 2, 2014 13:41
Show Gist options
  • Save reschke/48ec30b0ac9d012b8b4e to your computer and use it in GitHub Desktop.
Save reschke/48ec30b0ac9d012b8b4e to your computer and use it in GitHub Desktop.
proposed patch for HTTP2 issue 535
diff --git a/draft-ietf-httpbis-http2.xml b/draft-ietf-httpbis-http2.xml
index 613d763..3de7ff9 100755
--- a/draft-ietf-httpbis-http2.xml
+++ b/draft-ietf-httpbis-http2.xml
@@ -2676,6 +2676,13 @@ HTTP2-Settings = token68
An HTTP message (request or response) consists of:
<list style="numbers">
<t>
+ zero or more <x:ref>HEADERS</x:ref> frames (followed by zero or
+ more <x:ref>CONTINUATION</x:ref> frames) containing the message
+ headers of non-final (1xx) HTTP responses (see <xref target="RFC7230" x:fmt=","
+ x:rel="#header.fields"/> and <xref target="RFC7231" x:fmt=","
+ x:rel="#status.1xx"/>), and
+ </t>
+ <t>
one <x:ref>HEADERS</x:ref> frame (followed by zero or more <x:ref>CONTINUATION</x:ref>
frames) containing the message headers (see <xref target="RFC7230" x:fmt=","
x:rel="#header.fields"/>), and
@@ -2724,11 +2731,12 @@ HTTP2-Settings = token68
<section anchor="informational-responses" title="Informational Responses">
<t>
- The 1xx series of HTTP response status codes (<xref target="RFC7231" x:fmt=","
- x:rel="#status.1xx"/>) are not supported in HTTP/2.
+ HTTP/2 removes support for the two 1xx series status codes defined in
+ <xref target="RFC7231" x:fmt="," x:rel="#status.1xx"/>): 100 (Continue),
+ and 101 (Switching Protocols).
</t>
<t>
- The most common use case for 1xx is using an Expect header field with a <spanx
+ 100 (Continue) was used with the Expect header field with a <spanx
style="verb">100-continue</spanx> token (colloquially, "Expect/continue") to indicate
that the client expects a 100 (Continue) non-final response status code, receipt of
which indicates that the client should continue sending the request body if it has not
@@ -2751,12 +2759,7 @@ HTTP2-Settings = token68
clients, in anticipation of a final status code.
</t>
<t>
- Other defined 1xx status codes are not applicable to HTTP/2. For example, the semantics
- of 101 (Switching Protocols) aren't suitable to a multiplexed protocol. Likewise, <xref
- target="RFC2518">102 (Processing)</xref> is no longer necessary to ensure connection
- liveness, because HTTP/2 has a separate means of keeping the connection alive. The use
- of the 102 (Processing) status code for progress reporting has since been deprecated and
- is not retained.
+ The semantics of 101 (Switching Protocols) arent't suitable to a multiplexed protocol.
</t>
<t>
This difference between protocol versions necessitates special handling by
@@ -2776,10 +2779,6 @@ HTTP2-Settings = token68
request that has a body; see <xref target="RFC7231" x:fmt=","
x:rel="#header.expect"/> for specific requirements.
</t>
- <t>
- An intermediary that gateways HTTP/2 to HTTP/1.1 MUST discard all other 1xx
- informational responses.
- </t>
</list>
</t>
</section>
@@ -3173,6 +3172,22 @@ HTTP2-Settings = token68
foo = bar
]]></artwork>
</figure>
+
+ <t>
+ A non-final response using a 1xx status code other than 100 or 101
+ is transmitted as a <x:ref>HEADERS</x:ref> frame, followed by zero
+ or more <x:ref>CONTINUATION</x:ref> frames:
+ </t>
+
+ <figure>
+ <artwork type="inline"><![CDATA[
+ HTTP/1.1 103 BAR HEADERS
+ Extension-Field: bar ==> - END_STREAM
+ + END_HEADERS
+ :status = 103
+ extension-field = bar
+]]></artwork>
+ </figure>
</section>
<section anchor="Reliability" title="Request Reliability Mechanisms in HTTP/2">
@@ -4433,21 +4448,6 @@ HTTP2-Settings = token68
<seriesInfo name="RFC" value="1323" />
</reference>
- <reference anchor="RFC2518">
- <front>
- <title>
- HTTP Extensions for Distributed Authoring -- WEBDAV
- </title>
- <author initials="Y." surname="Goland" fullname="Y. Y. Goland"/>
- <author initials="E." surname="Whitehead" fullname="E. J. Whitehead, Jr."/>
- <author initials="A." surname="Faizi" fullname="A. Faizi"/>
- <author initials="S." surname="Carter" fullname="S. R. Carter"/>
- <author initials="D." surname="Jensen" fullname="D. Jensen"/>
- <date year="1999" month="February" />
- </front>
- <seriesInfo name="RFC" value="2518" />
- </reference>
-
<reference anchor="RFC3749">
<front>
<title>Transport Layer Security Protocol Compression Methods</title>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment