Re: [quicwg/base-drafts] Closing and draining tidy (#3988)
Jana Iyengar <notifications@github.com> Thu, 27 August 2020 05:49 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 BE57A3A0D62 for <quic-issues@ietfa.amsl.com>; Wed, 26 Aug 2020 22:49:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.101
X-Spam-Level:
X-Spam-Status: No, score=-3.101 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, 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 CBMPNIFH_sm1 for <quic-issues@ietfa.amsl.com>; Wed, 26 Aug 2020 22:49:14 -0700 (PDT)
Received: from out-27.smtp.github.com (out-27.smtp.github.com [192.30.252.210]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 61CFE3A0D61 for <quic-issues@ietf.org>; Wed, 26 Aug 2020 22:49:14 -0700 (PDT)
Received: from github-lowworker-b2150d3.ash1-iad.github.net (github-lowworker-b2150d3.ash1-iad.github.net [10.56.113.12]) by smtp.github.com (Postfix) with ESMTP id 90599902618 for <quic-issues@ietf.org>; Wed, 26 Aug 2020 22:49:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1598507353; bh=73tx6LuU4W5v2hYxY1Gn9YAIG54xMObvcyoik8IUwCA=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=EEPdHjHqYUkM05t4XxlJRjzvkzYby959AIbyWV3FbfDy/qVVhUP3PxTnWH5PGKXNL ykfsk21BOPIz92roHQ28uWJr1HAbx3M5x8MS0jVUZrlqL0BMFHkLG5qbBmdW5ofYfU 44vyN3DRxAdwQQHHSJDeYT/GUuJ/d+yF2fkD2IZo=
Date: Wed, 26 Aug 2020 22:49:13 -0700
From: Jana Iyengar <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK7XYFBFJOCSYM6UMWF5KMVFTEVBNHHCQLL6RE@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/3988/review/476392482@github.com>
In-Reply-To: <quicwg/base-drafts/pull/3988@github.com>
References: <quicwg/base-drafts/pull/3988@github.com>
Subject: Re: [quicwg/base-drafts] Closing and draining tidy (#3988)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5f4749597e441_44671964173b0"; 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/oXIHu1cUkj3Rbo0IAq4DAmsqFCM>
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: Thu, 27 Aug 2020 05:49:19 -0000
@janaiyengar commented on this pull request. LGTM, just a large number of small nits. > -amount of time before responding to a received packet. - -An endpoint is allowed to drop the packet protection keys when entering the -closing period ({{draining}}) and send a packet containing a CONNECTION_CLOSE in -response to any UDP datagram that is received. However, an endpoint without the -packet protection keys cannot identify and discard invalid packets. To avoid -creating an unwitting amplification attack, such endpoints MUST limit the -cumulative size of packets containing a CONNECTION_CLOSE frame to 3 times the -cumulative size of the packets that cause those packets to be sent. To minimize -the state that an endpoint maintains for a closing connection, endpoints MAY -send the exact same packet. +closing state; see {{closing}}. After receiving a CONNECTION_CLOSE frame, +endpoints enter the draining state; see {{draining}}. + +An immediate close can be used after an application protocol has arranged to +close a connection. This might be after the application protocols negotiates a ```suggestion close a connection. This might be after the application protocol negotiates a ``` > - -An endpoint is allowed to drop the packet protection keys when entering the -closing period ({{draining}}) and send a packet containing a CONNECTION_CLOSE in -response to any UDP datagram that is received. However, an endpoint without the -packet protection keys cannot identify and discard invalid packets. To avoid -creating an unwitting amplification attack, such endpoints MUST limit the -cumulative size of packets containing a CONNECTION_CLOSE frame to 3 times the -cumulative size of the packets that cause those packets to be sent. To minimize -the state that an endpoint maintains for a closing connection, endpoints MAY -send the exact same packet. +closing state; see {{closing}}. After receiving a CONNECTION_CLOSE frame, +endpoints enter the draining state; see {{draining}}. + +An immediate close can be used after an application protocol has arranged to +close a connection. This might be after the application protocols negotiates a +graceful shutdown. The application protocol exchanges whatever messages that ```suggestion graceful shutdown. The application protocol can exchange messages that ``` > -An endpoint is allowed to drop the packet protection keys when entering the -closing period ({{draining}}) and send a packet containing a CONNECTION_CLOSE in -response to any UDP datagram that is received. However, an endpoint without the -packet protection keys cannot identify and discard invalid packets. To avoid -creating an unwitting amplification attack, such endpoints MUST limit the -cumulative size of packets containing a CONNECTION_CLOSE frame to 3 times the -cumulative size of the packets that cause those packets to be sent. To minimize -the state that an endpoint maintains for a closing connection, endpoints MAY -send the exact same packet. +closing state; see {{closing}}. After receiving a CONNECTION_CLOSE frame, +endpoints enter the draining state; see {{draining}}. + +An immediate close can be used after an application protocol has arranged to +close a connection. This might be after the application protocols negotiates a +graceful shutdown. The application protocol exchanges whatever messages that +are needed to cause both endpoints to agree to close the connection, after which ```suggestion are needed for both application endpoints to agree that the connection can be closed, after which ``` > -closing period ({{draining}}) and send a packet containing a CONNECTION_CLOSE in -response to any UDP datagram that is received. However, an endpoint without the -packet protection keys cannot identify and discard invalid packets. To avoid -creating an unwitting amplification attack, such endpoints MUST limit the -cumulative size of packets containing a CONNECTION_CLOSE frame to 3 times the -cumulative size of the packets that cause those packets to be sent. To minimize -the state that an endpoint maintains for a closing connection, endpoints MAY -send the exact same packet. +closing state; see {{closing}}. After receiving a CONNECTION_CLOSE frame, +endpoints enter the draining state; see {{draining}}. + +An immediate close can be used after an application protocol has arranged to +close a connection. This might be after the application protocols negotiates a +graceful shutdown. The application protocol exchanges whatever messages that +are needed to cause both endpoints to agree to close the connection, after which +the application requests that the connection be closed. When the application ```suggestion the application requests that QUIC close the connection. When QUIC consequently ``` > -response to any UDP datagram that is received. However, an endpoint without the -packet protection keys cannot identify and discard invalid packets. To avoid -creating an unwitting amplification attack, such endpoints MUST limit the -cumulative size of packets containing a CONNECTION_CLOSE frame to 3 times the -cumulative size of the packets that cause those packets to be sent. To minimize -the state that an endpoint maintains for a closing connection, endpoints MAY -send the exact same packet. +closing state; see {{closing}}. After receiving a CONNECTION_CLOSE frame, +endpoints enter the draining state; see {{draining}}. + +An immediate close can be used after an application protocol has arranged to +close a connection. This might be after the application protocols negotiates a +graceful shutdown. The application protocol exchanges whatever messages that +are needed to cause both endpoints to agree to close the connection, after which +the application requests that the connection be closed. When the application +closes the connection, a CONNECTION_CLOSE frame with an appropriate error code ```suggestion closes the connection, a CONNECTION_CLOSE frame with an application-supplied error code ``` > -packet protection keys cannot identify and discard invalid packets. To avoid -creating an unwitting amplification attack, such endpoints MUST limit the -cumulative size of packets containing a CONNECTION_CLOSE frame to 3 times the -cumulative size of the packets that cause those packets to be sent. To minimize -the state that an endpoint maintains for a closing connection, endpoints MAY -send the exact same packet. +closing state; see {{closing}}. After receiving a CONNECTION_CLOSE frame, +endpoints enter the draining state; see {{draining}}. + +An immediate close can be used after an application protocol has arranged to +close a connection. This might be after the application protocols negotiates a +graceful shutdown. The application protocol exchanges whatever messages that +are needed to cause both endpoints to agree to close the connection, after which +the application requests that the connection be closed. When the application +closes the connection, a CONNECTION_CLOSE frame with an appropriate error code +will be used to signal closure. ```suggestion will be used to signal closure to the peer. ``` > + +An immediate close can be used after an application protocol has arranged to +close a connection. This might be after the application protocols negotiates a +graceful shutdown. The application protocol exchanges whatever messages that +are needed to cause both endpoints to agree to close the connection, after which +the application requests that the connection be closed. When the application +closes the connection, a CONNECTION_CLOSE frame with an appropriate error code +will be used to signal closure. + +The closing and draining connection states exist to ensure that connections +close cleanly and that delayed or reordered packets are properly discarded. +These states SHOULD persist for at least three times the current Probe Timeout +(PTO) interval as defined in {{QUIC-RECOVERY}}. + +Disposing of connection state prior to exiting the closing or draining state +could cause could result in an generating unnecessary stateless reset in ```suggestion could cause could result in an endpoint generating a stateless reset unnecessarily when ``` > +An immediate close can be used after an application protocol has arranged to +close a connection. This might be after the application protocols negotiates a +graceful shutdown. The application protocol exchanges whatever messages that +are needed to cause both endpoints to agree to close the connection, after which +the application requests that the connection be closed. When the application +closes the connection, a CONNECTION_CLOSE frame with an appropriate error code +will be used to signal closure. + +The closing and draining connection states exist to ensure that connections +close cleanly and that delayed or reordered packets are properly discarded. +These states SHOULD persist for at least three times the current Probe Timeout +(PTO) interval as defined in {{QUIC-RECOVERY}}. + +Disposing of connection state prior to exiting the closing or draining state +could cause could result in an generating unnecessary stateless reset in +response to receiving a packet. Endpoints that have some alternative means to ```suggestion it receives a late-arriving packet. Endpoints that have some alternative means to ``` > +will be used to signal closure. + +The closing and draining connection states exist to ensure that connections +close cleanly and that delayed or reordered packets are properly discarded. +These states SHOULD persist for at least three times the current Probe Timeout +(PTO) interval as defined in {{QUIC-RECOVERY}}. + +Disposing of connection state prior to exiting the closing or draining state +could cause could result in an generating unnecessary stateless reset in +response to receiving a packet. Endpoints that have some alternative means to +ensure that late-arriving packets do not induce a response, such as those that +are able to close the UDP socket, MAY end these states earlier to allow for +faster resource recovery. Servers that retain an open socket for accepting new +connections SHOULD NOT end the closing or draining states early. + +Once the closing or draining state ends, an endpoint SHOULD discard all ```suggestion Once its closing or draining state ends, an endpoint SHOULD discard all ``` > + +The closing and draining connection states exist to ensure that connections +close cleanly and that delayed or reordered packets are properly discarded. +These states SHOULD persist for at least three times the current Probe Timeout +(PTO) interval as defined in {{QUIC-RECOVERY}}. + +Disposing of connection state prior to exiting the closing or draining state +could cause could result in an generating unnecessary stateless reset in +response to receiving a packet. Endpoints that have some alternative means to +ensure that late-arriving packets do not induce a response, such as those that +are able to close the UDP socket, MAY end these states earlier to allow for +faster resource recovery. Servers that retain an open socket for accepting new +connections SHOULD NOT end the closing or draining states early. + +Once the closing or draining state ends, an endpoint SHOULD discard all +connection state. An endpoint MAY send a stateless reset in response ```suggestion connection state. The endpoint MAY send a stateless reset in response ``` > +The closing and draining connection states exist to ensure that connections +close cleanly and that delayed or reordered packets are properly discarded. +These states SHOULD persist for at least three times the current Probe Timeout +(PTO) interval as defined in {{QUIC-RECOVERY}}. + +Disposing of connection state prior to exiting the closing or draining state +could cause could result in an generating unnecessary stateless reset in +response to receiving a packet. Endpoints that have some alternative means to +ensure that late-arriving packets do not induce a response, such as those that +are able to close the UDP socket, MAY end these states earlier to allow for +faster resource recovery. Servers that retain an open socket for accepting new +connections SHOULD NOT end the closing or draining states early. + +Once the closing or draining state ends, an endpoint SHOULD discard all +connection state. An endpoint MAY send a stateless reset in response +to any further incoming packets. ```suggestion to any further incoming packets belonging to this connection. ``` > +### Closing Connection State {#closing} + +An endpoint enters the closing state after initiating an immediate close. + +In the closing state, an endpoint retains only enough information to generate a +packet containing a CONNECTION_CLOSE frame and to identify packets as belonging +to the connection. An endpoint in the closing state sends a packet containing a +CONNECTION_CLOSE frame in response to any incoming packet that it attributes to +the connection. + +An endpoint SHOULD limit the rate at which it generates packets in the closing +state. For instance, an endpoint could wait for a progressively increasing +number of received packets or amount of time before responding to received +packets. + +The endpoint's selected connection ID and the QUIC version are sufficient ```suggestion An endpoint's selected connection ID and the QUIC version are sufficient ``` > + +An endpoint enters the closing state after initiating an immediate close. + +In the closing state, an endpoint retains only enough information to generate a +packet containing a CONNECTION_CLOSE frame and to identify packets as belonging +to the connection. An endpoint in the closing state sends a packet containing a +CONNECTION_CLOSE frame in response to any incoming packet that it attributes to +the connection. + +An endpoint SHOULD limit the rate at which it generates packets in the closing +state. For instance, an endpoint could wait for a progressively increasing +number of received packets or amount of time before responding to received +packets. + +The endpoint's selected connection ID and the QUIC version are sufficient +information to identify packets for a closing connection; an endpoint MAY ```suggestion information to identify packets for a closing connection; the endpoint MAY ``` > + +In the closing state, an endpoint retains only enough information to generate a +packet containing a CONNECTION_CLOSE frame and to identify packets as belonging +to the connection. An endpoint in the closing state sends a packet containing a +CONNECTION_CLOSE frame in response to any incoming packet that it attributes to +the connection. + +An endpoint SHOULD limit the rate at which it generates packets in the closing +state. For instance, an endpoint could wait for a progressively increasing +number of received packets or amount of time before responding to received +packets. + +The endpoint's selected connection ID and the QUIC version are sufficient +information to identify packets for a closing connection; an endpoint MAY +discard all other connection state. An endpoint that is closing is not required +to process the frames contained in packets. An endpoint MAY retain packet ```suggestion to process any received frame. An endpoint MAY retain packet ``` All frames are in packets. > +the connection. + +An endpoint SHOULD limit the rate at which it generates packets in the closing +state. For instance, an endpoint could wait for a progressively increasing +number of received packets or amount of time before responding to received +packets. + +The endpoint's selected connection ID and the QUIC version are sufficient +information to identify packets for a closing connection; an endpoint MAY +discard all other connection state. An endpoint that is closing is not required +to process the frames contained in packets. An endpoint MAY retain packet +protection keys for incoming packets to allow it to read and process a +CONNECTION_CLOSE frame. + +An endpoint MAY drop packet protection keys when entering the closing state +and send a packet containing a CONNECTION_CLOSE in response to any UDP datagram ```suggestion and send a packet containing a CONNECTION_CLOSE frame in response to any UDP datagram ``` > +number of received packets or amount of time before responding to received +packets. + +The endpoint's selected connection ID and the QUIC version are sufficient +information to identify packets for a closing connection; an endpoint MAY +discard all other connection state. An endpoint that is closing is not required +to process the frames contained in packets. An endpoint MAY retain packet +protection keys for incoming packets to allow it to read and process a +CONNECTION_CLOSE frame. + +An endpoint MAY drop packet protection keys when entering the closing state +and send a packet containing a CONNECTION_CLOSE in response to any UDP datagram +that is received. However, an endpoint that discards packet protection keys +cannot identify and discard invalid packets. To avoid being used for an +amplication attack, such endpoints MUST limit the cumulative size of packets +containing a CONNECTION_CLOSE frame to 3 times the cumulative size of the ```suggestion it sends to three times the cumulative size of the ``` > +packets. + +The endpoint's selected connection ID and the QUIC version are sufficient +information to identify packets for a closing connection; an endpoint MAY +discard all other connection state. An endpoint that is closing is not required +to process the frames contained in packets. An endpoint MAY retain packet +protection keys for incoming packets to allow it to read and process a +CONNECTION_CLOSE frame. + +An endpoint MAY drop packet protection keys when entering the closing state +and send a packet containing a CONNECTION_CLOSE in response to any UDP datagram +that is received. However, an endpoint that discards packet protection keys +cannot identify and discard invalid packets. To avoid being used for an +amplication attack, such endpoints MUST limit the cumulative size of packets +containing a CONNECTION_CLOSE frame to 3 times the cumulative size of the +packets that cause those packets to be sent. To minimize the state that an ```suggestion packets that are received and attributed to the connection. To minimize the state that an ``` > +The endpoint's selected connection ID and the QUIC version are sufficient +information to identify packets for a closing connection; an endpoint MAY +discard all other connection state. An endpoint that is closing is not required +to process the frames contained in packets. An endpoint MAY retain packet +protection keys for incoming packets to allow it to read and process a +CONNECTION_CLOSE frame. + +An endpoint MAY drop packet protection keys when entering the closing state +and send a packet containing a CONNECTION_CLOSE in response to any UDP datagram +that is received. However, an endpoint that discards packet protection keys +cannot identify and discard invalid packets. To avoid being used for an +amplication attack, such endpoints MUST limit the cumulative size of packets +containing a CONNECTION_CLOSE frame to 3 times the cumulative size of the +packets that cause those packets to be sent. To minimize the state that an +endpoint maintains for a closing connection, endpoints MAY send the exact same +packet. ```suggestion packet in response to any received packet. ``` > @@ -2763,26 +2805,37 @@ Note: congestion control, which are not expected to be relevant for a closed connection. Retransmitting the final packet requires less state. -New packets from unverified addresses could be used to create an amplification -attack; see {{address-validation}}. To avoid this, endpoints MUST either limit -transmission of CONNECTION_CLOSE frames to validated addresses or drop packets -without response if the response would be more than three times larger than the -received packet. +While in the closing state, an endpoint could receive packets from a new source +address, possibly indicating a connection migration; see {{migration}}. An +endpoint in the closing state MUST either discard packets received from +unvalidated addresses or limit the cumulative size of packets it sends to +unvalidated addresses to 3 times the size of packets it receives from the ```suggestion an unvalidated address to three times the size of packets it receives from that ``` > @@ -2763,26 +2805,37 @@ Note: congestion control, which are not expected to be relevant for a closed connection. Retransmitting the final packet requires less state. -New packets from unverified addresses could be used to create an amplification -attack; see {{address-validation}}. To avoid this, endpoints MUST either limit -transmission of CONNECTION_CLOSE frames to validated addresses or drop packets -without response if the response would be more than three times larger than the -received packet. +While in the closing state, an endpoint could receive packets from a new source +address, possibly indicating a connection migration; see {{migration}}. An +endpoint in the closing state MUST either discard packets received from +unvalidated addresses or limit the cumulative size of packets it sends to ```suggestion an unvalidated address or limit the cumulative size of packets it sends to ``` > @@ -2763,26 +2805,37 @@ Note: congestion control, which are not expected to be relevant for a closed connection. Retransmitting the final packet requires less state. -New packets from unverified addresses could be used to create an amplification -attack; see {{address-validation}}. To avoid this, endpoints MUST either limit -transmission of CONNECTION_CLOSE frames to validated addresses or drop packets -without response if the response would be more than three times larger than the -received packet. +While in the closing state, an endpoint could receive packets from a new source +address, possibly indicating a connection migration; see {{migration}}. An +endpoint in the closing state MUST either discard packets received from +unvalidated addresses or limit the cumulative size of packets it sends to +unvalidated addresses to 3 times the size of packets it receives from the +address. + +An endpoint is not expected to handle key updates when it is closing. A key ```suggestion An endpoint is not expected to handle key updates when it is closing (Section 6 of {{QUIC-TLS}}). A key ``` > @@ -2763,26 +2805,37 @@ Note: congestion control, which are not expected to be relevant for a closed connection. Retransmitting the final packet requires less state. -New packets from unverified addresses could be used to create an amplification -attack; see {{address-validation}}. To avoid this, endpoints MUST either limit -transmission of CONNECTION_CLOSE frames to validated addresses or drop packets -without response if the response would be more than three times larger than the -received packet. +While in the closing state, an endpoint could receive packets from a new source +address, possibly indicating a connection migration; see {{migration}}. An +endpoint in the closing state MUST either discard packets received from +unvalidated addresses or limit the cumulative size of packets it sends to +unvalidated addresses to 3 times the size of packets it receives from the +address. + +An endpoint is not expected to handle key updates when it is closing. A key +update might prevent the endpoint from moving from the closing state to +the draining state, but it otherwise has no impact. ```suggestion the draining state, since the endpoint will not be able to process subsequently received packets, but it otherwise has no impact. ``` > +NO_ERROR code if appropriate. An endpoint MUST NOT send further packets, which +could result in a constant exchange of CONNECTION_CLOSE frames until either +endpoint exits the closing state. ```suggestion NO_ERROR code if appropriate. An endpoint MUST NOT send further packets. Doing so could result in a constant exchange of CONNECTION_CLOSE frames until one of the endpoints exits the closing state. ``` > +An endpoint MAY transition from the closing state to the draining state if it +receives a CONNECTION_CLOSE frame, which indicates that the peer is also ```suggestion An endpoint MAY enter the draining state from the closing state if it receives a CONNECTION_CLOSE frame, which indicates that the peer is also ``` > -An immediate close can be used after an application protocol has arranged to -close a connection. This might be after the application protocols negotiates a -graceful shutdown. The application protocol exchanges whatever messages that -are needed to cause both endpoints to agree to close the connection, after which -the application requests that the connection be closed. When the application -closes the connection, a CONNECTION_CLOSE frame with an appropriate error code -will be used to signal closure. +An endpoint MAY transition from the closing state to the draining state if it +receives a CONNECTION_CLOSE frame, which indicates that the peer is also +closing or draining. In this case, the draining state SHOULD end when the +closing state would have ended. In other words, the endpoint uses the same end +time, but ceases retransmission of the closing packet. ```suggestion time, but ceases transmission of any packets on this connection. ``` -- 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/3988#pullrequestreview-476392482
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- [quicwg/base-drafts] Closing and draining tidy (#… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Nick Banks
- Re: [quicwg/base-drafts] Closing and draining tid… ianswett
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… ianswett
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… ianswett
- Re: [quicwg/base-drafts] Closing and draining tid… Mike Bishop
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Jana Iyengar
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Martin Thomson
- Re: [quicwg/base-drafts] Closing and draining tid… Jana Iyengar
- Re: [quicwg/base-drafts] Closing and draining tid… Jana Iyengar