From be7abda7d498272e360fe6fae18984c309533de3 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Sat, 5 Oct 2019 16:22:05 -0600 Subject: reverse_proxy: Implement retry_match; by default only retry GET requests See https://caddy.community/t/http-proxy-and-non-get-retries/6304 --- modules/caddyhttp/reverseproxy/httptransport.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'modules/caddyhttp/reverseproxy/httptransport.go') diff --git a/modules/caddyhttp/reverseproxy/httptransport.go b/modules/caddyhttp/reverseproxy/httptransport.go index 00b58a4..4ff9989 100644 --- a/modules/caddyhttp/reverseproxy/httptransport.go +++ b/modules/caddyhttp/reverseproxy/httptransport.go @@ -79,7 +79,14 @@ func (h *HTTPTransport) Provision(_ caddy.Context) error { network = dialInfo.Network address = dialInfo.Address } - return dialer.DialContext(ctx, network, address) + conn, err := dialer.DialContext(ctx, network, address) + if err != nil { + // identify this error as one that occurred during + // dialing, which can be important when trying to + // decide whether to retry a request + return nil, DialError{err} + } + return conn, nil }, MaxConnsPerHost: h.MaxConnsPerHost, ResponseHeaderTimeout: time.Duration(h.ResponseHeaderTimeout), -- cgit v1.2.3