Skip to content

Commit

Permalink
Merge branch 'master' into unrecoverable-without-1rtt
Browse files Browse the repository at this point in the history
  • Loading branch information
martinthomson committed Jul 20, 2019
2 parents 50f28c1 + 94e02c1 commit c98c77e
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 170 deletions.
11 changes: 4 additions & 7 deletions draft-ietf-quic-http.md
Expand Up @@ -155,7 +155,7 @@ potential latency gain. Several HTTP/3 frames are used to manage server push,
such as PUSH_PROMISE, DUPLICATE_PUSH, MAX_PUSH_ID, and CANCEL_PUSH.

As in HTTP/2, request and response headers are compressed for transmission.
Because HPACK {{?HPACK=RFC7231}} relies on in-order transmission of compressed
Because HPACK {{?HPACK=RFC7541}} relies on in-order transmission of compressed
header blocks (a guarantee not provided by QUIC), HTTP/3 replaces HPACK with
QPACK [QPACK]. QPACK uses separate unidirectional streams to modify and track
header table state, while header blocks refer to the state of the table without
Expand Down Expand Up @@ -2184,24 +2184,21 @@ INTERNAL_ERROR (0x2):
: HTTP_INTERNAL_ERROR in {{http-error-codes}}.

FLOW_CONTROL_ERROR (0x3):
: Not applicable, since QUIC handles flow control. Would provoke a
QUIC_FLOW_CONTROL_RECEIVED_TOO_MUCH_DATA from the QUIC layer.
: Not applicable, since QUIC handles flow control.

SETTINGS_TIMEOUT (0x4):
: Not applicable, since no acknowledgement of SETTINGS is defined.

STREAM_CLOSED (0x5):
: Not applicable, since QUIC handles stream management. Would provoke a
QUIC_STREAM_DATA_AFTER_TERMINATION from the QUIC layer.
: Not applicable, since QUIC handles stream management.

FRAME_SIZE_ERROR (0x6):
: HTTP_MALFORMED_FRAME error codes defined in {{http-error-codes}}.

REFUSED_STREAM (0x7):
: HTTP_REQUEST_REJECTED (in {{http-error-codes}}) is used to indicate that a
request was not processed. Otherwise, not applicable because QUIC handles
stream management. A STREAM_ID_ERROR at the QUIC layer is used for streams
that are improperly opened.
stream management.

CANCEL (0x8):
: HTTP_REQUEST_CANCELLED in {{http-error-codes}}.
Expand Down
24 changes: 9 additions & 15 deletions draft-ietf-quic-invariants.md
Expand Up @@ -161,21 +161,15 @@ All other bits in that byte are version specific.

The next four bytes include a 32-bit Version field (see {{version}}).

The next byte contains the length in bytes of the two Connection IDs (see
{{connection-id}}) that follow. Each length is encoded as a 4-bit unsigned
integer. The length of the Destination Connection ID (DCIL) occupies the high
bits of the byte and the length of the Source Connection ID (SCIL) occupies the
low bits of the byte. An encoded length of 0 indicates that the connection ID
is also 0 bytes in length. Non-zero encoded lengths are increased by 3 to get
the full length of the connection ID; the final value is therefore either 0 or
between 4 and 18 bytes in length (inclusive). For example, a byte with the
value 0xe0 describes a 17 byte Destination Connection ID and a zero byte Source
Connection ID.

The connection ID lengths are followed by two connection IDs. The connection
ID associated with the recipient of the packet (the Destination Connection ID)
is followed by the connection ID associated with the sender of the packet (the
Source Connection ID).
The next byte contains the length in bytes of the Destination Connection ID (see
{{connection-id}}) field that follows it. This length is encoded as an 8-bit
unsigned integer. The Destination Connection ID field follows the DCID Len
field and is between 0 and 255 bytes in length.

The next byte contains the length in bytes
of the Source Connection ID field that follows it. This length is encoded as
a 8-bit unsigned integer. The Source Connection ID field follows the SCID Len
field and is between 0 and 255 bytes in length.

The remainder of the packet contains version-specific content.

Expand Down
2 changes: 1 addition & 1 deletion draft-ietf-quic-qpack.md
Expand Up @@ -321,7 +321,7 @@ decoder has started reading from the stream.
<!-- doesn't the stream become unblocked when the encoder receives the acks? -->

When processing header blocks, the decoder expects the Required Insert Count to
exactly match the value defined in {{blocked-streams}. If it encounters a
exactly match the value defined in {{blocked-streams}}. If it encounters a
smaller value than expected, it MUST treat this as a connection error of type
HTTP_QPACK_DECOMPRESSION_FAILED (see {{invalid-references}}). If it encounters a
larger value than expected, it MAY treat this as a connection error of type
Expand Down

0 comments on commit c98c77e

Please sign in to comment.