Subject: Re: [quicwg/base-drafts] ACK means all frames processed; closed means all frames ACK'd (#381)

From: Mike Bishop <[email-masked]>
Date: Thu, 09 Mar 2017 16:19:22 -0800

MikeBishop commented on this pull request.

> @@ -2061,8 +2069,9 @@ From this state, either endpoint can send a frame with the FIN flag set, which
 causes the stream to transition into one of the "half-closed" states.  An
 endpoint sending an FIN flag causes the stream state to become "half-closed
 (local)".  An endpoint receiving a FIN flag causes the stream state to become
-"half-closed (remote)"; the receiving endpoint MUST NOT process the FIN flag
-until all preceding data on the stream has been received.
+"half-closed (remote)" once all preceding data has arrived.  The receiving
+endpoint MUST NOT consider the stream state to have changed until all data has
+arrived.

Yes -- the sending peer considers it to have changed, but it continues to count against the limit until the change is ACK'd.

-- 
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/pull/381#discussion_r105304148

---

From: Martin Thomson <[email-masked]>
Date: Thu, 09 Mar 2017 16:14:07 -0800

martinthomson approved this pull request.

> @@ -2021,11 +2027,13 @@ frame with the FIN flag set can cause two state transitions.  When the FIN flag
 is sent on an empty STREAM frame, the offset in the STREAM frame MUST be one
 greater than the last data byte sent on this stream.
 
-Both endpoints have a subjective view of the state of a stream that could be
-different when frames are in transit.  Endpoints do not coordinate the creation
-of streams; they are created unilaterally by either endpoint.  The negative
-consequences of a mismatch in states are limited to the "closed" state after
-sending RST_STREAM, where frames might be received for some time after closing.
+The recipient of a frame which changes stream state will have a delayed view of
+the state of a stream while the frame is in transit.  Endpoints do not
+coordinate the creation of streams; they are created unilaterally by either
+endpoint.  The negative consequences of a mismatch in states are limited to the
+"closed" state after sending RST_STREAM, where frames might be received for some
+time after closing.  Endpoints SHOULD use acknowledgments to understand the

s/SHOULD/can

Interesting question: what does the sending peer assume?  I think that they have to assume that the state isn't closed until all data has been acknowledged (or their RST_STREAM is acknowledged).  (Oh, I see that you caught that, awesome).

> @@ -2187,6 +2197,12 @@ count toward the maximum number of streams that an endpoint is permitted to
 open.  Streams in any of these three states count toward the limit advertised in
 the concurrent stream limit.
 
+A recently closed stream MUST also be considered to count toward this limit
+until packets containing all frames required to close the stream have been
+acknowledged. For a stream which closed cleanly, this means all STREAM frames
+have been acknowledged; for a stream closed abruptly, this means the RST_STREAM

for a stream *that* closed abruptly

-- 
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/pull/381#pullrequestreview-26178119

---

From: Mike Bishop <[email-masked]>
Date: Thu, 09 Mar 2017 16:18:40 -0800

@MikeBishop pushed 1 commit.

9c1d413  Martin's feedback

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/381/files/9730de1e1477788334d931cdb1cc8ffdf9f21e0a..9c1d413780a50f27fe381c4b2e63bf60384d121c

---

From: Mike Bishop <[email-masked]>
Date: Thu, 09 Mar 2017 15:10:55 -0800

Fixes #341.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/381

-- Commit Summary --

  * ACK means all frames processed; closed means all frames ACK'd

-- File Changes --

    M draft-ietf-quic-transport.md (62)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/381.patch
https://github.com/quicwg/base-drafts/pull/381.diff

-- 
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/pull/381

---

From: Martin Thomson <[email-masked]>
Date: Thu, 09 Mar 2017 21:01:35 -0800

I just modified the OP to note that this also closes #200.

-- 
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/pull/381#issuecomment-285578350

---

From: ianswett <[email-masked]>
Date: Fri, 10 Mar 2017 09:35:24 -0800

ianswett approved this pull request.

-- 
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/pull/381#pullrequestreview-26332502

---

From: janaiyengar <[email-masked]>
Date: Fri, 10 Mar 2017 09:48:47 -0800

janaiyengar approved this pull request.

This looks great -- thanks, Mike.

-- 
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/pull/381#pullrequestreview-26335541

---

From: janaiyengar <[email-masked]>
Date: Fri, 10 Mar 2017 09:49:41 -0800

Merged #381.

-- 
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/pull/381#event-995285786