Re: [quicwg/base-drafts] Independent states and STOP_SENDING (#171)
janaiyengar <notifications@github.com> Wed, 02 August 2017 01:00 UTC
Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 967E212F287 for <quic-issues@ietfa.amsl.com>; Tue, 1 Aug 2017 18:00:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.299
X-Spam-Level:
X-Spam-Status: No, score=-9.299 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-2.8, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GNoAnt2ZCEuX for <quic-issues@ietfa.amsl.com>; Tue, 1 Aug 2017 18:00:50 -0700 (PDT)
Received: from github-smtp2a-ext-cp1-prd.iad.github.net (github-smtp2-ext5.iad.github.net [192.30.252.196]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 49F2E12EC32 for <quic-issues@ietf.org>; Tue, 1 Aug 2017 18:00:50 -0700 (PDT)
Date: Tue, 01 Aug 2017 18:00:49 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1501635649; bh=HntoSZU50mluE8kaokP5IcZIcMBGm1FsiOkVSZaDjRk=; h=From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=0CO7dXgxnlomDUYc6UOB2CMY5JVy7tKRzA/NBkjk1sYyV/aHBHskalkWhlviE3Haw lgPCFFbSsRMJDSUM5c2/mkDNXkxEqvrYaElimGuJrBpBpOmJUo1g7K8xOk7TDKoke3 Dw11inQmM9Z9IMFNBfrvvyFHFt1/PK6EXb8evl48=
From: janaiyengar <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abe5b4e38cd67a1a22b840d59fccd2c9e6029cfa3692cf000000011598e64192a169ce0c04da41@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/171/review/53654548@github.com>
In-Reply-To: <quicwg/base-drafts/pull/171@github.com>
References: <quicwg/base-drafts/pull/171@github.com>
Subject: Re: [quicwg/base-drafts] Independent states and STOP_SENDING (#171)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5981244174d0c_256c53fc435f49c3019987"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: janaiyengar
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/NVzyFeaSls4SYRvZ-ZjkQcQSUxw>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.22
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 02 Aug 2017 01:00:52 -0000
janaiyengar commented on this pull request.
This largely LGTM. A few minor comments, and I'm happy to approve once they are addressed.
> @@ -2527,6 +2549,32 @@ Reordering might cause frames to be received after closing, see
{{state-hc-remote}}.
+## Solicited State Transitions
+
+If an endpoint is no longer interested in the data being received, it MAY send a
+STOP_SENDING frame on a stream in the "open" or "half-closed (local)" state to
+request closure of the stream in the opposite direction. This typically
Editorial nit: does it make sense to say "request", since it's more of a "demand"? I can't come up with better wording, but maybe "require"? Up to you.
> @@ -275,11 +275,12 @@ fully closed.
A server can send a complete response prior to the client sending an entire
request if the response does not depend on any portion of the request that has
not been sent and received. When this is true, a server MAY request that the
-client abort transmission of a request without error by sending a RST_STREAM
-with an error code of NO_ERROR after sending a complete response and closing its
-stream. Clients MUST NOT discard responses as a result of receiving such a
-RST_STREAM, though clients can always discard responses at their discretion for
-other reasons.
+client abort transmission of a request without error by triggering a QUIC
+STOP_SENDING with error code HTTP_EARLY_RESPONSE, sending a complete response,
+and cleanly closing its streams. Clients MUST NOT discard complete responses as
+a result of receiving a STOP_SENDING, though clients can always discard
HTTP clients won't receive a STOP_SENDING, since that's a QUIC frame (I realize that this was similar earlier with RST_STREAM)... perhaps something like "as a result of receiving a solicited stream reset"? I don't have better ideas.
> @@ -275,11 +275,12 @@ fully closed.
A server can send a complete response prior to the client sending an entire
request if the response does not depend on any portion of the request that has
not been sent and received. When this is true, a server MAY request that the
-client abort transmission of a request without error by sending a RST_STREAM
-with an error code of NO_ERROR after sending a complete response and closing its
-stream. Clients MUST NOT discard responses as a result of receiving such a
-RST_STREAM, though clients can always discard responses at their discretion for
-other reasons.
+client abort transmission of a request without error by triggering a QUIC
+STOP_SENDING with error code HTTP_EARLY_RESPONSE, sending a complete response,
+and cleanly closing its streams. Clients MUST NOT discard complete responses as
+a result of receiving a STOP_SENDING, though clients can always discard
+responses at their discretion for other reasons. Servers SHOULD NOT abort a
Why a MUST NOT above with clients and SHOULD NOT here with server behavior?
> + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| Stream ID (32) |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| Error Code (32) |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+~~~
+
+The fields are:
+
+Stream ID:
+: The 32-bit Stream ID of the stream being ignored.
+
+Error Code:
+: The reason the sender is ignoring the stream, or QUIC_NO_ERROR if not due to
+ an error.
Isn't this always an application error code and never a QUIC one? If so, can we simply say this is for the application to specify and consume, as one of the app-specified error codes? I don't think you need a QUIC_NO_ERROR in this case.
> the terminal STREAM frame that contains a FIN flag.
-A stream becomes "closed" when the endpoint sends and receives acknowledgment of
-a RST_STREAM frame.
+A stream also becomes "closed" when the endpoint sends a RST_STREAM frame.
This shouldn't have required an ack to be received in the first case. The stream state machine does not include retransmission logic -- that is considered to be a task for the reliabiity machinery "below".
> @@ -2527,6 +2546,26 @@ Reordering might cause frames to be received after closing, see
{{state-hc-remote}}.
+## Solicited State Transitions
+
+If an endpoint is no longer interested in the data being received, it MAY send a
+STOP_SENDING frame on a stream in the "open" or "half-closed (local)" state to
+request closure of the stream in the opposite direction. This typically
+indicates that the receiving application is no longer reading from the stream,
+but is not a guarantee that incoming data will be ignored.
+
+STREAM frames received after sending STOP_SENDING are still counted toward the
This is a requirement now, right? I don't think we need to specify enforcement though... that seems like a bit of an overkill. Besides a sender of STOP_SENDING will have to make assumptions about how the peer's sending code is structured to make an assessment of when to consider the peer in error. For instance, the peer may have buffered data that gets drained after the received STOP_SENDING is acked... surely not a good way to write that code, but there's no reason to require this not happen.
--
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/171#pullrequestreview-53654548
- [quicwg/base-drafts] First pass at REQUEST_RST (#… Mike Bishop
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Mike Bishop
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Martin Thomson
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Mike Bishop
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Mike Bishop
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Mike Bishop
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Mike Bishop
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Mike Bishop
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Mike Bishop
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Martin Thomson
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Martin Thomson
- Re: [quicwg/base-drafts] First pass at REQUEST_RS… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and R… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and R… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and R… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Igor Lubashev
- Re: [quicwg/base-drafts] Independent states and D… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and D… Igor Lubashev
- Re: [quicwg/base-drafts] Independent states and D… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and D… ianswett
- Re: [quicwg/base-drafts] Independent states and D… Igor Lubashev
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Igor Lubashev
- Re: [quicwg/base-drafts] Independent states and D… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and D… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and D… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Christian Huitema
- Re: [quicwg/base-drafts] Independent states and D… Christian Huitema
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… ianswett
- Re: [quicwg/base-drafts] Independent states and D… ianswett
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and D… ianswett
- Re: [quicwg/base-drafts] Independent states and S… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and S… Martin Thomson
- Re: [quicwg/base-drafts] Independent states and S… Subodh Iyengar
- Re: [quicwg/base-drafts] Independent states and S… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and S… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and S… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and S… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and S… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and S… janaiyengar
- Re: [quicwg/base-drafts] Independent states and S… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and S… Mike Bishop
- Re: [quicwg/base-drafts] Independent states and S… Martin Thomson