Subject: [quicwg/base-drafts] Opening streams implicitly (#1675)

From: mirjak <[email-masked]>
Date: Thu, 16 Aug 2018 09:57:59 -0700

The spec says:
"Streams that are used out of order result
   in opening all lower-numbered streams of the same type in the same
   direction."
Does this actually means that state is created for all these streams, e.g. in the state diagrams they are in "Ready" and "Recv" state? Because that kind of like the word "open" is used in that sections.

Later on the spec says, however,
"The receiving part of a stream initiated by a peer (types 1 and 3 for
   a client, or 0 and 2 for a server) are created when the first STREAM,
   STREAM_BLOCKED, RST_STREAM, or MAX_STREAM_DATA (bidirectional only,
   see below) is received for that stream."
Which should instead maybe say instead "received for that stream or a stream with a higher stream ID of the same type".

However, not sure if that was indented that way or if that is what people implement. In any case it should be clarified in the spec.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1675

---

From: MikkelFJ <[email-masked]>
Date: Thu, 16 Aug 2018 10:51:54 -0700

Not arguing about clarity of spec but

No, it does not mean state is necessarily created - except for tracking the range of active states and tracking which of those have been closed. Active in praxis tracking the lowest stream not closed and and the largest stream opened - separate for each specific stream type.

It does mean that it is valid to send on a peer initiated bidi stream without seeing any packets for that stream, if a later stream was indeed seen. The receiver of that transmission (i.e. the stream initiator) should then not error because a higher stream was already opened. It can therefore create the state lazily. On the other hand, receiving data ahead of the latest created stream is a protocol error. If that had been allowed, state could grow indefinitely.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1675#issuecomment-413630329

---

From: Martin Thomson <[email-masked]>
Date: Thu, 16 Aug 2018 17:41:53 -0700

> Which should instead maybe say instead "received for that stream or a stream with a higher stream ID of the same type".

This is two separate statements:

A stream opens when X.
A stream opens when Y.

X = higher numbered stream opens
Y = certain frames are received

It should not be necessary to say that Y transitively implies X when the two statements are in adjacent paragraphs, that all describe different ways in which a stream might be opened.  Yes, there are four paragraphs, but it turns out that the ways in which streams open is simple to understand, but full of corner cases.  We have much to thank non-determinism for here.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1675#issuecomment-413724683

---

From: Martin Thomson <[email-masked]>
Date: Thu, 16 Aug 2018 17:41:54 -0700

Closed #1675.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1675#event-1793657910