mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2026-10-11 09:48:10 +08:00
28 lines
578 B
Go
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
|
|
}
|
|
}
|