Files
mihomo/common/httputils/force_close.go
T

28 lines
578 B
Go

package httputils
import (
"io"
"github.com/metacubex/http"
)
type closeIdleTransport interface {
CloseIdleConnections()
}
type closeHttp2Connections interface {
CloseHttp2Connections()
}
func CloseTransport(roundTripper http.RoundTripper) {
if tr, ok := roundTripper.(closeIdleTransport); ok {
tr.CloseIdleConnections() // for *http.Transport
}
if tr, ok := roundTripper.(closeHttp2Connections); ok {
tr.CloseHttp2Connections() // for *http.Transport in our own fork
}
if tr, ok := roundTripper.(io.Closer); ok {
_ = tr.Close() // for *http3.Transport
}
}