Skip to content

Commit 1279a5d

Browse files
committed
Make Related Stream ID mandatory with Offset 0
Thinking about this more, though it might be convenient to provide the field on more than just the first STREAM frame in a stream, it is valuable to have some certainty about the status of a stream. Mandating the use of the field with offset 0 ensures that a recipient has a single place that they can look for the information.
1 parent c58b0eb commit 1279a5d

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

draft-ietf-quic-transport.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2641,7 +2641,7 @@ stream ID of the first in the Related Stream ID of the first stream. This
26412641
enables straightforward use of QUIC for request-response protocols or protocols
26422642
that rely on bidirectional channels.
26432643

2644-
This document doesn't proscribe the use of the Related Stream ID field, leaving
2644+
This document doesn't define how to use the Related Stream ID field, leaving
26452645
decisions about the semantics of related streams to protocols that use QUIC.
26462646
Protocols that use QUIC MUST either define the semantics of related streams or
26472647
prohibit the use of the Related Stream ID field. Protocols MAY define other
@@ -2652,11 +2652,17 @@ invalid Related Stream ID field values, unless the protocol defines a more
26522652
specific error code for the circumstances.
26532653

26542654
The Related Stream ID for a stream only needs to be sent once for each stream
2655-
(allowing for retransmissions due to loss). Sending the field on all stream
2656-
frames with an offset of 0 ensures that the value is received without
2657-
duplicating the field unnecessarily. If the value of the Related Stream ID
2658-
changes for a stream, the endpoint that receives the conflicting value MUST
2659-
treat this as a connection error of type INVALID_RELATED_STREAM.
2655+
(allowing for retransmissions due to loss). If a stream is related to another
2656+
stream, then all stream frames with an offset of 0 MUST include the Related
2657+
Stream ID field. This is generally sufficient to ensure that the relationship
2658+
between streams is correctly received. However, the field MAY be included on
2659+
other STREAM frames, which ensures that the stream relationship can be
2660+
established even if the packet containing the first octets of a stream is lost.
2661+
If the Related Stream ID is present in a STREAM frame and the value is different
2662+
to the value included in other STREAM frames or a STREAM frame with a non-zero
2663+
offset contains the value and a STREAM frame with offset zero does not, the
2664+
recipient of the conflicting information MUST treat this as a connection error
2665+
of type INVALID_RELATED_STREAM.
26602666

26612667
A related stream MUST NOT refer to a stream in the "idle" state
26622668
({{stream-state-idle}}). Receipt of a STREAM frame that includes a Related

0 commit comments

Comments
 (0)