Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into request_rst
Browse files Browse the repository at this point in the history
  • Loading branch information
MikeBishop committed Jan 30, 2017
2 parents 8451cf6 + a371325 commit 8bc87e6
Show file tree
Hide file tree
Showing 5 changed files with 176 additions and 240 deletions.
13 changes: 11 additions & 2 deletions CONTRIBUTING.md
Expand Up @@ -59,6 +59,8 @@ commits will only be responded to with best effort, and may not be seen.

## Resolving Issues

The `open` issues in the issues list are those that we are currently or plan to discuss. When an issue is `closed`, it implies that the group has consensus and it is reflected in the draft(s). If substantive new information is brought to our attention, issues can be reopened by the Chairs.

Issues will be labeled by the Chairs as either `editorial` or `design`.

* **Design** issues require discussion and consensus in the Working Group. This discussion can happen both in the issue and on the [Working Group mailing list](https://www.ietf.org/mailman/listinfo/quic), as outlined below.
Expand All @@ -73,10 +75,17 @@ Consensus for the resolution of a design issue can be established in a few diffe

The editors can also propose resolutions for the group's consideration by incorporating them into the draft(s); when doing so, the issue should not be closed until consensus is declared.

Issues that have consensus will be labelled as `editor-ready`. After the editor has incorporated a resolution into the specification, the issue can be closed.
Issues that have consensus but which aren't yet reflected in text will be labelled as `editor-ready`. After the editors have incorporated a resolution into the specification, the issue can be closed.

When a new draft is published, the design issues that have been closed since the last draft will be highlighted on the mailing list, to aid reviewers.

### Discretionary Design Issue Labels

When a new draft is published, the design issues that have been closed since the last draft will be highlighted on the mailing list, to aid reviewers. If substantive new information is brought to our attention, issues can be reopened by the Chairs.
We also use the following labels to help understand the state of our design issues:

* **Needs Discussion**: The issue needs significant Working Group discussion before it can progress.
* **Confirm Consensus**: There is a resolution that the proponents believe reflects a consensus position, needs to be confirmed with the WG.
* **Notify Consensus**: The WG has achieved consensus in a meeting, needs to be confirmed on the mailing list.


## Pull Requests
Expand Down
73 changes: 2 additions & 71 deletions README.md
Expand Up @@ -41,74 +41,5 @@ instructions](https://github.com/martinthomson/i-d-template/blob/master/doc/SETU

## Contributing

Before submitting feedback, please familiarize yourself with our current issues
list and review the [working group
documents](https://datatracker.ietf.org/wg/quic/documents/) and [mailing
list discussion](https://mailarchive.ietf.org/arch/browse/quic/). If you're
new to this, you may also want to read the [Tao of the
IETF](https://www.ietf.org/tao.html).

Be aware that all contributions to the specification fall under the "NOTE WELL"
terms outlined below.

1. The best way to provide feedback (editorial or design) and ask questions is
sending an e-mail to our mailing list
([info](https://www.ietf.org/mailman/listinfo/quic)). This will ensure that
the entire Working Group sees your input in a timely fashion.

2. If you have **editorial** suggestions (i.e., those that do not change the
meaning of the specification), you can either:

a) Fork this repository and submit a pull request; this is the lowest
friction way to get editorial changes in.

b) Submit a new issue to Github, and mention that you believe it is editorial
in the issue body. It is not necessary to notify the mailing list for
editorial issues.

c) Make comments on individual commits in Github. Note that this feedback is
processed only with best effort by the editors, so it should only be used for
quick editorial suggestions or questions.

3. For non-editorial (i.e., **design**) issues, you can also create an issue on
Github. However, you **must notify the mailing list** when creating such issues,
providing a link to the issue in the message body.

Note that **github issues are not for substantial discussions**; the only
appropriate place to discuss design issues is on the mailing list itself.


## NOTE WELL

Any submission to the [IETF](https://www.ietf.org/) intended by the Contributor
for publication as all or part of an IETF Internet-Draft or RFC and any
statement made within the context of an IETF activity is considered an "IETF
Contribution". Such statements include oral statements in IETF sessions, as
well as written and electronic communications made at any time or place, which
are addressed to:

* The IETF plenary session
* The IESG, or any member thereof on behalf of the IESG
* Any IETF mailing list, including the IETF list itself, any working group
or design team list, or any other list functioning under IETF auspices
* Any IETF working group or portion thereof
* Any Birds of a Feather (BOF) session
* The IAB or any member thereof on behalf of the IAB
* The RFC Editor or the Internet-Drafts function
* All IETF Contributions are subject to the rules of
[RFC 5378](https://tools.ietf.org/html/rfc5378) and
[RFC 3979](https://tools.ietf.org/html/rfc3979)
(updated by [RFC 4879](https://tools.ietf.org/html/rfc4879)).

Statements made outside of an IETF session, mailing list or other function,
that are clearly not intended to be input to an IETF activity, group or
function, are not IETF Contributions in the context of this notice.

Please consult [RFC 5378](https://tools.ietf.org/html/rfc5378) and [RFC
3979](https://tools.ietf.org/html/rfc3979) for details.

A participant in any IETF activity is deemed to accept all IETF rules of
process, as documented in Best Current Practices RFCs and IESG Statements.

A participant in any IETF activity acknowledges that written, audio and video
records of meetings may be made and may be available to the public.
See our
[guidelines for contribution](https://github.com/quicwg/base-drafts/blob/master/CONTRIBUTING.md).
89 changes: 44 additions & 45 deletions draft-ietf-quic-http.md
Expand Up @@ -198,8 +198,7 @@ This amounts to the second least-significant bit differentiating the two streams
in a request.

The lower-numbered stream is called the message control stream and carries
frames related to the request/response, including HEADERS. All request control
streams are exempt from connection-level flow control. The higher-numbered
frames related to the request/response, including HEADERS. The higher-numbered
stream is the data stream and carries the request/response body with no
additional framing. Note that a request or response without a body will cause
this stream to be half-closed in the corresponding direction without
Expand Down Expand Up @@ -229,29 +228,30 @@ HTTP response on the same streams as the request.

An HTTP message (request or response) consists of:

1. for a response only, zero or more header blocks (a sequence of HEADERS frames
with End Header Block set on the last) on the control stream containing the
message headers of informational (1xx) HTTP responses (see {{!RFC7230}},
Section 3.2 and {{!RFC7231}}, Section 6.2),
1. one header block (see {{frame-headers}}) on the control stream containing the
message headers (see {{!RFC7230}}, Section 3.2),

2. one header block on the control stream containing the message headers (see
{{!RFC7230}}, Section 3.2),
2. the payload body (see {{!RFC7230}}, Section 3.3), sent on the data stream,

3. the payload body (see {{!RFC7230}}, Section 3.3), sent on the data stream,

4. optionally, one header block on the control stream containing the
3. optionally, one header block on the control stream containing the
trailer-part, if present (see {{!RFC7230}}, Section 4.1.2).

In addition, prior to sending the message header block indicated above, a
response may contain zero or more header blocks on the control stream containing
the message headers of informational (1xx) HTTP responses (see {{!RFC7230}},
Section 3.2 and {{!RFC7231}}, Section 6.2).

The data stream MUST be half-closed immediately after the transfer of the body.
If the message does not contain a body, the corresponding data stream MUST still
be half-closed without transferring any data. The "chunked" transfer encoding
defined in Section 4.1 of {{!RFC7230}} MUST NOT be used.

Trailing header fields are carried in a header block following the body. Such a
header block is a sequence of HEADERS frames with End Header Block set on the
last frame. Header blocks after the first but before the end of the stream are
invalid. These MUST be decoded to maintain HPACK decoder state, but the
resulting output MUST be discarded.
Trailing header fields are carried in an additional header block on the message
control stream. Such a header block is a sequence of HEADERS frames with End
Header Block set on the last frame. Senders MUST send only one header block in
the trailers section; receivers MUST decode any subsequent header blocks in
order to maintain HPACK decoder state, but the resulting output MUST be
discarded.

An HTTP request/response exchange fully consumes a pair of streams. After
sending a request, a client closes the streams for sending; after sending a
Expand Down Expand Up @@ -732,31 +732,6 @@ TODOs:
field in this case.
- No CONTINUATION -- HEADERS have EHB; do we need it here?


### PING

PING frames do not exist, since QUIC provides equivalent functionality. Frame
type 0x6 is reserved.


### GOAWAY frame

GOAWAY frames do not exist, since QUIC provides equivalent functionality. Frame
type 0x7 is reserved.


### WINDOW_UPDATE frame

WINDOW_UPDATE frames do not exist, since QUIC provides equivalent functionality.
Frame type 0x8 is reserved.


### CONTINUATION frame

CONTINUATION frames do not exist, since larger supported HEADERS/PUSH_PROMISE
frames provide equivalent functionality. Frame type 0x9 is reserved.


### SETTINGS_ACK Frame {#frame-settings-ack}

The SETTINGS_ACK frame (id = 0x0b) acknowledges receipt and application
Expand Down Expand Up @@ -800,6 +775,30 @@ On the connection control stream, the SETTINGS_ACK frame MUST have a length
which is a multiple of two octets. A SETTINGS_ACK frame of any other length MUST
be treated as a connection error of type HTTP_MALFORMED_SETTINGS_ACK.

### PING

PING frames do not exist, since QUIC provides equivalent functionality. Frame
type 0x6 is reserved.


### GOAWAY frame

GOAWAY frames do not exist, since QUIC provides equivalent functionality. Frame
type 0x7 is reserved.


### WINDOW_UPDATE frame

WINDOW_UPDATE frames do not exist, since QUIC provides equivalent functionality.
Frame type 0x8 is reserved.


### CONTINUATION frame

CONTINUATION frames do not exist, since larger supported HEADERS/PUSH_PROMISE
frames provide equivalent functionality. Frame type 0x9 is reserved.



# Error Handling {#errors}

Expand Down Expand Up @@ -849,16 +848,16 @@ HTTP_MALFORMED_HEADERS (0x09):
: A HEADERS frame has been received with an invalid format.

HTTP_MALFORMED_PRIORITY (0x0A):
: A HEADERS frame has been received with an invalid format.
: A PRIORITY frame has been received with an invalid format.

HTTP_MALFORMED_SETTINGS (0x0B):
: A HEADERS frame has been received with an invalid format.
: A SETTINGS frame has been received with an invalid format.

HTTP_MALFORMED_PUSH_PROMISE (0x0C):
: A HEADERS frame has been received with an invalid format.
: A PUSH_PROMISE frame has been received with an invalid format.

HTTP_MALFORMED_SETTINGS_ACK (0x0D):
: A HEADERS frame has been received with an invalid format.
: A SETTINGS_ACK frame has been received with an invalid format.

HTTP_INTERRUPTED_HEADERS (0x0E):
: A HEADERS frame without the End Header Block flag was followed by a frame
Expand Down

0 comments on commit 8bc87e6

Please sign in to comment.