From f76b87252e22c62f0ce5290e3e7f84fb02ff4540 Mon Sep 17 00:00:00 2001 From: James Peter Date: Thu, 13 Jun 2024 16:01:16 +1000 Subject: [PATCH] Fixes cloudflare/cloudflared#1273 --- proxy/proxy.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/proxy/proxy.go b/proxy/proxy.go index dd999f87..be42c217 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -199,6 +199,16 @@ func (p *Proxy) proxyHTTPRequest( roundTripReq.Header.Set("Connection", "keep-alive") } + // Handle GOAWAY frame to correctly retry a request + if roundTripReq.Body != nil { + roundTripReq.GetBody = func() (io.ReadCloser, err error) { + if err.Error() == "http2: Transport received Server's graceful shutdown GOAWAY" { + return roundTripReq.Body, nil + } + return nil, err + } + } + // Set the User-Agent as an empty string if not provided to avoid inserting golang default UA if roundTripReq.Header.Get("User-Agent") == "" { roundTripReq.Header.Set("User-Agent", "")