From db4c73dd58b496f2c0c49a38f6c8b5f525456e3e Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Sat, 14 Sep 2019 18:10:29 -0600 Subject: reverse_proxy: Close idle connections on module unload --- modules/caddyhttp/reverseproxy/httptransport.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/caddyhttp/reverseproxy/httptransport.go b/modules/caddyhttp/reverseproxy/httptransport.go index c135ac8..00b58a4 100644 --- a/modules/caddyhttp/reverseproxy/httptransport.go +++ b/modules/caddyhttp/reverseproxy/httptransport.go @@ -123,6 +123,14 @@ func (h HTTPTransport) RoundTrip(req *http.Request) (*http.Response, error) { return h.RoundTripper.RoundTrip(req) } +// Cleanup implements caddy.CleanerUpper and closes any idle connections. +func (h HTTPTransport) Cleanup() error { + if ht, ok := h.RoundTripper.(*http.Transport); ok { + ht.CloseIdleConnections() + } + return nil +} + // TLSConfig holds configuration related to the // TLS configuration for the transport/client. type TLSConfig struct { @@ -203,6 +211,7 @@ type KeepAlive struct { // Interface guards var ( - _ caddy.Provisioner = (*HTTPTransport)(nil) - _ http.RoundTripper = (*HTTPTransport)(nil) + _ caddy.Provisioner = (*HTTPTransport)(nil) + _ http.RoundTripper = (*HTTPTransport)(nil) + _ caddy.CleanerUpper = (*HTTPTransport)(nil) ) -- cgit v1.2.3