Re: New Version Notification for draft-nottingham-httpbis-retry-01.txt

Matt Menke <> Wed, 01 February 2017 21:33 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id D0412129A60 for <>; Wed, 1 Feb 2017 13:33:58 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -9.718
X-Spam-Status: No, score=-9.718 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, RP_MATCHES_RCVD=-3.199, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 4GuGvBMXYKxR for <>; Wed, 1 Feb 2017 13:33:57 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id E79E3129A5D for <>; Wed, 1 Feb 2017 13:33:56 -0800 (PST)
Received: from lists by with local (Exim 4.80) (envelope-from <>) id 1cZ2Ua-0006Tm-Om for; Wed, 01 Feb 2017 21:31:04 +0000
Resent-Date: Wed, 01 Feb 2017 21:31:04 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtps (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <>) id 1cZ2UV-0006Sr-Ed for; Wed, 01 Feb 2017 21:30:59 +0000
Received: from ([]) by with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <>) id 1cZ2UO-0001qu-KG for; Wed, 01 Feb 2017 21:30:53 +0000
Received: by with SMTP id s203so110003963oie.1 for <>; Wed, 01 Feb 2017 13:30:31 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=bvhA6kxRQOTsYy+nq3Eai+6/QRRvRZ0w6P49bMb00xk=; b=SDzak4cQPDK0zO4JWL+ocH1RpuMiQ9V6liF9+V/E7z+6TZrofGgG2b1TMopeMQqJh2 bkucSZmnz5+dEusxfbbtcbTMyPU/J2egS2bMZtHr4ZfH9dFpW4fm1AbMjrh0cGyt/5rE kG51mAgWeOJ7oCxNJtad5rB3cZLMy8ExMaDgaQpfjxJgVb3EjATC6NeP+p34TVZmj7Zd L2NruPzkPp2Dvnm1DoRddU6KHHkMiQ80bbEHdGPe490tQfqWS7NjHoYoWrXjS0qC4gsY wP+/BU3+VI2HA6DvPBtkhRwVAcqQ3trMa5hNW0t4Y0PX+EhuITqYbjBFOsCFng82gx2O FzgQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=bvhA6kxRQOTsYy+nq3Eai+6/QRRvRZ0w6P49bMb00xk=; b=Km8PSbyrODkma5wnaHzsv0UyF4IPdtW+cTRnMhBFlr9kpkZWA8UXI6fz3Z4nMNIDfL c+4P6G0dpVimsvIqYsIPFOe/XZliGEUJBbiBHNV8cs0drn0172e5fRHGSpVzmXEaNBv+ lIptcpK900z/DmaTi2iuj/w6D5IGacEZdWrmtrVW3ge5GDFb8qW9iN0MZ1AjCRgioWTo q6INFCmxHC7VPLVvSQ1r2eiX1qVXvPn2Cdu+4OLHe+FAbDNv7/n69Ld8WH1aely7Mi7A dZTch8i5K/cL/B930D8WCRh00xDGMwWRce8/Ybh2EUwOvmVvDC94qvS9qgysDJncsDy1 h0RQ==
X-Gm-Message-State: AIkVDXJD1zC3kPH4Irtu+EA/eMzBUkydiGUZf/C0GCl3rQu14wnV/ejv4foh2yb7CbaZBnVvvOpWkYtYRC737qMR
X-Received: by with SMTP id i184mr2568566oib.73.1485984625863; Wed, 01 Feb 2017 13:30:25 -0800 (PST)
MIME-Version: 1.0
Received: by with HTTP; Wed, 1 Feb 2017 13:30:25 -0800 (PST)
In-Reply-To: <>
References: <> <>
From: Matt Menke <>
Date: Wed, 01 Feb 2017 16:30:25 -0500
Message-ID: <>
To: Mark Nottingham <>
Cc: HTTP Working Group <>
Content-Type: multipart/alternative; boundary="001a113dececc47da605477ec1c3"
Received-SPF: pass client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-4.9
X-W3C-Hub-Spam-Report: AWL=-1.407, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: 1cZ2UO-0001qu-KG c4ddee5ed0ea59d7825b10e699b81f54
Subject: Re: New Version Notification for draft-nottingham-httpbis-retry-01.txt
Archived-At: <>
X-Mailing-List: <> archive/latest/33414
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>

A bit more elaboration on Chrome's behavior:

I didn't see it mentioned in the draft, but the reason we retry is that any
time we reuse a socket, there's a race - servers timeout sockets after some
period, and we don't know what that period is.  So we could be retrying at
the same time the server is closing the socket on us.

We'll retry on a "stale" socket (one that was connected and then sat in a
socket pool, with or without being used first).  So if we fully preconnect
to a server before there's a connection request, we consider the socket
stale,if we've used a socket before, it's stale, or if we created a socket
to service a request, but the request was cancelled, and then the socket
connected and was returned to the socket pool, it's stale.

We only retry if we've received no response from a server, or if we get a
failure while still sending the request (i.e., if we're in the middle of
sending the request on error, we'll retry, even if there's data on the
socket from the server, since we don't bother to check for that).

We also only retry on certain errors (reset, connection closed, connection
aborted (Which is a weird error from the OS of some sort), H2 ping failure,
H2 server refusing the stream, QUIC handshake error.  This probably doesn't
include all the errors that we could get racily while reusing a socket (TCP
ping timeout, for instance?).

On Wed, Feb 1, 2017 at 3:26 AM, Mark Nottingham <> wrote:

> FYI; fairly minor update. Would love to hear what people think about the
> various suggested paths forward.
> Cheers,
> Begin forwarded message:
> *From: *
> *Subject: **New Version Notification for
> draft-nottingham-httpbis-retry-01.txt*
> *Date: *1 February 2017 at 7:25:43 pm AEDT
> *To: *"Mark Nottingham" <>
> A new version of I-D, draft-nottingham-httpbis-retry-01.txt
> has been successfully submitted by Mark Nottingham and posted to the
> IETF repository.
> Name: draft-nottingham-httpbis-retry
> Revision: 01
> Title: Retrying HTTP Requests
> Document date: 2017-02-01
> Group: Individual Submission
> Pages: 18
> URL:  
> nottingham-httpbis-retry-01.txt
> Status:
> httpbis-retry/
> Htmlized:
> retry-01
> Diff: 
> nottingham-httpbis-retry-01
> Abstract:
>   HTTP allows requests to be automatically retried under certain
>   circumstances.  This draft explores how this is implemented,
>   requirements for similar functionality from other parts of the stack,
>   and potential future improvements.
> Please note that it may take a couple of minutes from the time of
> submission
> until the htmlized version and diff are available at
> The IETF Secretariat
> --
> Mark Nottingham