Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rationalize HTTP_WRONG_SETTING_DIRECTION #2814

Merged
merged 3 commits into from
Jun 27, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions draft-ietf-quic-http.md
Original file line number Diff line number Diff line change
Expand Up @@ -679,7 +679,7 @@ maintaining these placeholders in the prioritization tree, clients can use them
with confidence that the server will not have discarded the state. Clients MUST
NOT send the `SETTINGS_NUM_PLACEHOLDERS` setting; receipt of this setting by a
server MUST be treated as a connection error of type
`HTTP_WRONG_SETTING_DIRECTION`.
`HTTP_SETTINGS_ERROR`.

Client-controlled placeholders are identified by an ID between zero and one less
than the number of placeholders the server has permitted. The orphan
Expand Down Expand Up @@ -1338,7 +1338,7 @@ while servers are more cautious about request size.

Parameters MUST NOT occur more than once in the SETTINGS frame. A receiver MAY
treat the presence of the same parameter more than once as a connection error of
type HTTP_MALFORMED_FRAME.
type HTTP_SETTINGS_ERROR.

The payload of a SETTINGS frame consists of zero or more parameters. Each
parameter consists of a setting identifier and a value, both encoded as QUIC
Expand Down Expand Up @@ -1594,9 +1594,9 @@ HTTP_NO_ERROR (0x00):
: No error. This is used when the connection or stream needs to be closed, but
there is no error to signal.

HTTP_WRONG_SETTING_DIRECTION (0x01):
: A client-only setting was sent by a server, or a server-only setting by a
client.
HTTP_GENERAL_PROTOCOL_ERROR (0x01):
: Peer violated protocol requirements in a way which doesn't match a more
specific error code, or endpoint declines to use the more specific error code.

Reserved (0x02):
: This code is reserved and has no meaning.
Expand Down Expand Up @@ -1662,9 +1662,10 @@ HTTP_UNEXPECTED_FRAME (0x0013):
HTTP_REQUEST_REJECTED (0x0014):
: A server rejected a request without performing any application processing.

HTTP_GENERAL_PROTOCOL_ERROR (0x00FF):
: Peer violated protocol requirements in a way which doesn't match a more
specific error code, or endpoint declines to use the more specific error code.
HTTP_SETTINGS_ERROR (0x00FF):
: An endpoint detected an error in the payload of a SETTINGS frame: a duplicate
setting was detected, a client-only setting was sent by a server, or a
server-only setting by a client.

HTTP_MALFORMED_FRAME (0x01XX):
: An error in a specific frame type. If the frame type is `0xfe` or less, the
Expand Down Expand Up @@ -1900,7 +1901,7 @@ The entries in the following table are registered by this document.
| Name | Code | Description | Specification |
| ----------------------------------- | ---------- | ---------------------------------------- | ---------------------- |
| HTTP_NO_ERROR | 0x0000 | No error | {{http-error-codes}} |
| HTTP_WRONG_SETTING_DIRECTION | 0x0001 | Setting sent in wrong direction | {{http-error-codes}} |
| HTTP_GENERAL_PROTOCOL_ERROR | 0x0001 | General protocol error | {{http-error-codes}} |
| Reserved | 0x0002 | N/A | N/A |
| HTTP_INTERNAL_ERROR | 0x0003 | Internal error | {{http-error-codes}} |
| Reserved | 0x0004 | N/A | N/A |
Expand All @@ -1921,6 +1922,7 @@ The entries in the following table are registered by this document.
| HTTP_UNEXPECTED_FRAME | 0x0013 | Frame not permitted in the current state | {{http-error-codes}} |
| HTTP_REQUEST_REJECTED | 0x0014 | Request not processed | {{http-error-codes}} |
| HTTP_MALFORMED_FRAME | 0x01XX | Error in frame formatting | {{http-error-codes}} |
| HTTP_SETTINGS_ERROR | 0x00FF | SETTINGS frame contained invalid values | {{http-error-codes}} |
| ----------------------------------- | ---------- | ---------------------------------------- | ---------------------- |

## Stream Types {#iana-stream-types}
Expand Down