diff --git a/pkg/tcp/dial.go b/pkg/tcp/dial.go index 75d2f7a4..9126190c 100644 --- a/pkg/tcp/dial.go +++ b/pkg/tcp/dial.go @@ -24,7 +24,7 @@ func Dial(u *url.URL, port string, timeout time.Duration) (net.Conn, error) { switch u.Scheme { case "rtsp", "rtmp": case "rtsps", "rtspx", "rtmps", "rtmpx": - if u.Scheme[4] == 'x' || net.ParseIP(hostname) != nil { + if u.Scheme[4] == 'x' || IsIP(hostname) { secure = &tls.Config{InsecureSkipVerify: true} } else { secure = &tls.Config{ServerName: hostname} diff --git a/pkg/tcp/request.go b/pkg/tcp/request.go index 5bcbc48b..401af2eb 100644 --- a/pkg/tcp/request.go +++ b/pkg/tcp/request.go @@ -32,7 +32,7 @@ func Do(req *http.Request) (*http.Response, error) { var client *http.Client - if req.URL.Scheme == "httpx" { + if req.URL.Scheme == "httpx" || (req.URL.Scheme == "https" && IsIP(req.URL.Hostname())) { req.URL.Scheme = "https" if insecureClient == nil { @@ -125,3 +125,7 @@ func Close(res *http.Response) { _ = res.Body.Close() } } + +func IsIP(hostname string) bool { + return net.ParseIP(hostname) != nil +}