Re: [quicwg/base-drafts] What should the receiver do when the peer closes a unidirectional stream before providing the stream type? (#2331)

Kazuho Oku <notifications@github.com> Sat, 12 January 2019 22:22 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 7E04F1310FA for <quic-issues@ietfa.amsl.com>; Sat, 12 Jan 2019 14:22:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -12.553
X-Spam-Level:
X-Spam-Status: No, score=-12.553 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-4.553, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-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 B76YNIT3Fd8M for <quic-issues@ietfa.amsl.com>; Sat, 12 Jan 2019 14:22:11 -0800 (PST)
Received: from out-11.smtp.github.com (out-11.smtp.github.com [192.30.254.194]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 503931310F6 for <quic-issues@ietf.org>; Sat, 12 Jan 2019 14:22:11 -0800 (PST)
Date: Sat, 12 Jan 2019 14:22:09 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1547331730; bh=05DM8u1zrJc/sgLzo+OGLE+BotmSsau2ch7QI8eAW7U=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=a1kdjfztm8w6pR2k2VhJgExn6GJmUfajrwS3ypOuDTWl70wBx8GKGGPEJ5K+nrqiU TuRJ98oJlt1vcOsT4ArQ67CP5nMQ8O0co+5PqGMBvW6whaKm83s/xwDrIYkInF176q M3X7rOSlCGpkm/w1q+fePwzmy++XzMojYAHzhits=
From: Kazuho Oku <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abb3755828492780c8aa1b2c6e214396f635f7b0df92cf0000000118522a9192a169ce17c1011d@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/2331/453785366@github.com>
In-Reply-To: <quicwg/base-drafts/issues/2331@github.com>
References: <quicwg/base-drafts/issues/2331@github.com>
Subject: Re: [quicwg/base-drafts] What should the receiver do when the peer closes a unidirectional stream before providing the stream type? (#2331)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5c3a6891eea59_9663fb11d6d45bc1276223"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: kazuho
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/-iBsqrBJFLCyxmPRmUusrKTCP1I>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
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: Sat, 12 Jan 2019 22:22:14 -0000

@mikkelfj Yes, I did edit my comment in order to clarify what I meant, while you tried to confirm what we have now. Thank you for the clarification and sorry for the confusion.

> Hence, if it treats this as a critical error, streams can never be reset. Consequently, either streams should never be reset, or a reset without a type should not be treated as critical. I.e. a stream only exists for real once a type is positively known.

Yes. To be precise, calling the symptom a critical error would mean that the sender cannot reset a stream until it knows that the peer has received the first octet. But it is often hard for the application to "know" that the peer has received the first octet. For example, the sender will in practice never know that the first octet of the control stream has been received by the peer if the values sent in the SETTINGS frame were: NUM_PLACEHOLDERS=0, QPACK_MAX_TABLE_CAPACITY=0.

OTOH, the downside of _not_ calling that a critical error means that the connection state might not advance at all, if the server creates a control stream and then resets it before the first byte is delivered to the client. In such case, a client that waits for SETTINGS frame before sending any request will stall forever. However, we might argue that such stall would also happen when the packet that carries the control stream gets always dropped on the network (for some reason), and that a sender resetting the control stream is as unlikely as that.

In the end, now I think I might prefer the second option (i.e. ignore).

-- 
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/2331#issuecomment-453785366