Re: [quicwg/base-drafts] Prevent Idle Timeout while Blocked (#3266)

Nick Banks <> Wed, 20 November 2019 02:10 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 8135012002F for <>; Tue, 19 Nov 2019 18:10:07 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Status: No, score=-8 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, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 08QQsh6Q-l6Z for <>; Tue, 19 Nov 2019 18:10:06 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id D03FA120025 for <>; Tue, 19 Nov 2019 18:10:05 -0800 (PST)
Date: Tue, 19 Nov 2019 18:10:04 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1574215805; bh=UVW5nAnysE8zCYnInl9A+3cfvm1Lb8GlnTfN1HWi+QI=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=fr3MJ7OXc1ecxUBkR7GqyNIS7SPlTtFcbX8zg+/Z8FJWI+WapWmmyHLkjE4iis5it kH/DaahZb26awUi5Buf3id/ZxJy0TSmxYiqq9z71GcJM9/GOjPW2VUgz/zRXtMXHdn hSmPtIWMThu0Mzq+xeB3HvV33P1DVyrkYhKIYIoQ=
From: Nick Banks <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/pull/3266/review/>
In-Reply-To: <quicwg/base-drafts/pull/>
References: <quicwg/base-drafts/pull/>
Subject: Re: [quicwg/base-drafts] Prevent Idle Timeout while Blocked (#3266)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5dd4a07ced012_3d993fa27facd9681353e"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: nibanks
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
Archived-At: <>
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 20 Nov 2019 02:10:07 -0000

nibanks commented on this pull request.

> @@ -785,13 +785,12 @@ flow control limits.
 If a sender runs out of flow control credit, it will be unable to send new data
 and is considered blocked.  A sender SHOULD send a STREAM_DATA_BLOCKED or
 DATA_BLOCKED frame to indicate it has data to write but is blocked by flow
-control limits.  These frames are expected to be sent infrequently in common
-cases, but they are considered useful for debugging and monitoring purposes.
-A sender SHOULD NOT send multiple STREAM_DATA_BLOCKED or DATA_BLOCKED frames
-for the same data limit, unless the original frame is determined to be lost.
-Another STREAM_DATA_BLOCKED or DATA_BLOCKED frame can be sent after the data
-limit is increased.
+control limits.  If a sender is blocked for long enough it is possible for the
+connection to idle timeout, even though the data is actively queued to be sent.
+To prevent this idle timeout from occurring, the sender SHOULD continue to
+periodically send the STREAM_DATA_BLOCKED or DATA_BLOCKED frame.  One method is
+to immediately resend the frame on acknowledgment of the previous one if the

I'm not trying to make any requirements on how many frames and how often you must send them. The only SHOULD here is to periodically (less than idle timeout) send some blocked frames. I'd leave it up to implementations to decide exactly what to do here. How should the text change (if at all) to make that more clear?

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub: