diff --git a/session.go b/session.go index c20c73d..aa4da6e 100644 --- a/session.go +++ b/session.go @@ -7,6 +7,7 @@ import ( "net/http/cookiejar" "net/url" "reflect" + "runtime" "time" "golang.org/x/net/publicsuffix" @@ -252,3 +253,13 @@ func (ses *Session) Options(url string) *Workflow { func (ses *Session) CloseIdleConnections() { ses.client.Transport.(*http.Transport).CloseIdleConnections() } + +// EnsureTransporterFinalized will ensure that when the HTTP client is GCed +// the runtime will close the idle connections (so that they won't leak) +// this function was adopted from Hashicorp's go-cleanhttp package +// 暂时不用, 标记到以后是否起作用 +func EnsureTransporterFinalized(httpTransport *http.Transport) { + runtime.SetFinalizer(&httpTransport, func(transportInt **http.Transport) { + (*transportInt).CloseIdleConnections() + }) +}