From 8bc7f1ee75de7ef639779c713c2bc8afc16063cd Mon Sep 17 00:00:00 2001 From: Martin Thomson Date: Thu, 27 Jul 2017 16:31:29 +1000 Subject: [PATCH 1/3] Register DATA in the registry --- draft-ietf-quic-http.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-quic-http.md b/draft-ietf-quic-http.md index 407614b7bf..e64a16a3b2 100644 --- a/draft-ietf-quic-http.md +++ b/draft-ietf-quic-http.md @@ -922,7 +922,7 @@ The entries in the following table are registered by this document. |---------------|------|-------------------------| | Frame Type | Code | Specification | |---------------|:----:|-------------------------| - | Reserved | 0x0 | N/A | + | DATA | 0x0 | {{frame-data}} | | HEADERS | 0x1 | {{frame-headers}} | | PRIORITY | 0x2 | {{frame-priority}} | | Reserved | 0x3 | N/A | From 76865016f73c26cae051c7edaf23ba87ae9aa149 Mon Sep 17 00:00:00 2001 From: Mike Bishop Date: Thu, 27 Jul 2017 10:53:31 -0700 Subject: [PATCH 2/3] ENABLE_PUSH instead of DISABLE_PUSH to match HTTP/2 (#694) --- draft-ietf-quic-http.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/draft-ietf-quic-http.md b/draft-ietf-quic-http.md index e64a16a3b2..446f3452d4 100644 --- a/draft-ietf-quic-http.md +++ b/draft-ietf-quic-http.md @@ -327,8 +327,8 @@ frames add, remove, or change the dependency links between streams. HTTP/QUIC supports server push as described in {{!RFC7540}}. During connection establishment, the client indicates whether it is willing to receive server -pushes via the SETTINGS_DISABLE_PUSH setting in the SETTINGS frame (see -{{connection-establishment}}), which defaults to 1 (true). +pushes via the SETTINGS_ENABLE_PUSH setting in the SETTINGS frame (see +{{connection-establishment}}), which is disabled by default. As with server push for HTTP/2, the server initiates a server push by sending a PUSH_PROMISE frame containing the Stream ID of the stream to be pushed, as well @@ -525,11 +525,11 @@ The following settings are defined in HTTP/QUIC: SETTINGS_HEADER_TABLE_SIZE (0x1): : An integer with a maximum value of 2^32 - 1. This value MUST be zero. - SETTINGS_DISABLE_PUSH (0x2): - : Transmitted as a Boolean; replaces SETTINGS_ENABLE_PUSH + SETTINGS_ENABLE_PUSH (0x2): + : Transmitted as a Boolean SETTINGS_MAX_HEADER_LIST_SIZE (0x6): - : An integer with a maximum value of 2^32 - 1. + : An integer with a maximum value of 2^32 - 1 #### Usage in 0-RTT @@ -767,7 +767,7 @@ SETTINGS_HEADER_TABLE_SIZE: : See {{settings-parameters}}. SETTINGS_ENABLE_PUSH: -: See SETTINGS_DISABLE_PUSH in {{settings-parameters}}. +: See {{settings-parameters}}. SETTINGS_MAX_CONCURRENT_STREAMS: : QUIC controls the largest open stream ID as part of its flow control logic. @@ -966,7 +966,7 @@ The entries in the following table are registered by this document. | Setting Name | Code | Specification | |----------------------------|:----:|-------------------------| | HEADER_TABLE_SIZE | 0x1 | {{settings-parameters}} | -| DISABLE_PUSH | 0x2 | {{settings-parameters}} | +| ENABLE_PUSH | 0x2 | {{settings-parameters}} | | Reserved | 0x3 | N/A | | Reserved | 0x4 | N/A | | Reserved | 0x5 | N/A | @@ -1039,6 +1039,7 @@ The original authors of this specification were Robbie Shade and Mike Warres. - Cite RFC 5234 (#404) - Return to a single stream per request (#245,#557) - Use separate frame type and settings registries from HTTP/2 (#81) +- SETTINGS_ENABLE_PUSH instead of SETTINGS_DISABLE_PUSH (#477) ## Since draft-ietf-quic-http-03 From 305585a06e51534620f054722a9b18f14b0d4c47 Mon Sep 17 00:00:00 2001 From: Martin Thomson Date: Sat, 29 Jul 2017 02:28:21 +1000 Subject: [PATCH 3/3] Don't allow reprioritization of stream 0 (#703) --- draft-ietf-quic-http.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/draft-ietf-quic-http.md b/draft-ietf-quic-http.md index 446f3452d4..f995289dfc 100644 --- a/draft-ietf-quic-http.md +++ b/draft-ietf-quic-http.md @@ -443,10 +443,16 @@ The PRIORITY frame payload has the following fields: {{!RFC7540}}, Section 5.3). Add one to the value to obtain a weight between 1 and 256. -A PRIORITY frame MUST have a payload length of nine octets. A PRIORITY frame -of any other length MUST be treated as a connection error of type +A PRIORITY frame MAY identify a dependent stream with a stream ID of 0; as in +{{!RFC7540}}, this makes the request dependent on the root of the dependency +tree. Stream ID 0 and stream ID 1 cannot be reprioritized; an attempt to +reprioritize these stream MUST be treated as a connection error of type HTTP_MALFORMED_PRIORITY. +The length of a PRIORITY frame is 9 octets. A PRIORITY frame with any other +length MUST be treated as a connection error of type HTTP_MALFORMED_PRIORITY. + + ### SETTINGS {#frame-settings} The SETTINGS frame (type=0x4) conveys configuration parameters that affect how