• Tom Bergan's avatar
    http2: retry requests after receiving REFUSED STREAM · 945ddfdd
    Tom Bergan authored
    RoundTrip will retry a request if it receives REFUSED_STREAM. To guard
    against servers that use REFUSED_STREAM to encourage rate limiting, or
    servers that return REFUSED_STREAM deterministically for some requests,
    we retry after an exponential backoff and we cap the number of retries.
    
    The exponential backoff starts on the second retry, with a backoff
    sequence of 1s, 2s, 4s, etc, with 10% random jitter.
    
    The retry cap was set to 6, somewhat arbitrarily. Rationale: this is
    what Firefox does.
    
    Updates golang/go#20985
    
    Change-Id: I4dcac4392ac4a3220d6d839f28bf943fe6b3fea7
    Reviewed-on: https://go-review.googlesource.com/50471
    Run-TryBot: Tom Bergan <tombergan@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    945ddfdd
transport_test.go 79.7 KB