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

Allow RST_STREAM to be sent and received after FIN #781

Merged
merged 5 commits into from Sep 28, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
20 changes: 16 additions & 4 deletions draft-ietf-quic-transport.md
Expand Up @@ -2638,6 +2638,11 @@ on new STREAM frames. Retransmission of data that has already been sent on
STREAM frames is permitted. An endpoint MAY also send MAX_STREAM_DATA and
STOP_SENDING in this state.

An application can decide to abandon a stream in this state. An endpoint can
send RST_STREAM for a stream that was closed with the FIN flag. The final offset
carried in this RST_STREAM frame MUST be the same as the previously established
final offset.

An endpoint that closes a stream MUST NOT send data beyond the final offset that
it has chosen, see {{state-closed}} for details.

Expand Down Expand Up @@ -2668,6 +2673,12 @@ closes a stream SHOULD be discarded. An endpoint MAY choose to limit the period
over which it ignores frames and treat frames that arrive after this time as
being in error.

An endpoint may receive a RST_STREAM in this state, such as when the peer resets
the stream after sending a FIN on it. In this case, the endpoint MAY discard any
data that it already received on that stream. The endpoint SHOULD close the
connection with a FINAL_OFFSET_ERROR if the received RST_STREAM carries a
different offset from the one already established.

An endpoint will know the final offset of the data it receives on a stream when
it reaches the "half-closed (remote)" state, see {{final-offset}} for details.

Expand All @@ -2684,11 +2695,12 @@ A stream also becomes "closed" when the endpoint sends a RST_STREAM frame.

### closed {#state-closed}

The "closed" state is the terminal state for a stream.
The "closed" state is the terminal state for a stream. Reordering might cause
frames to be received after closing, see {{state-hc-remote}}.

Once a stream reaches this state, no frames can be sent that mention the stream.
Reordering might cause frames to be received after closing, see
{{state-hc-remote}}.
If the application resets a stream that is already in the "closed" state, a
RST_STREAM frame MAY still be sent in order to cancel retransmissions of
previously-sent STREAM frames.


## Solicited State Transitions
Expand Down