Fix redirect for rtspx source #565

This commit is contained in:
Alexey Khit
2023-08-23 06:07:23 +03:00
parent f5cca50830
commit 75a3dad745
4 changed files with 67 additions and 86 deletions
+9 -10
View File
@@ -24,19 +24,18 @@ func NewClient(uri string) *Conn {
}
func (c *Conn) Dial() (err error) {
var conn net.Conn
if c.Transport == "" {
conn, err = Dial(c.uri)
} else {
conn, err = websocket.Dial(c.Transport)
}
if err != nil {
if c.URL, err = url.Parse(c.uri); err != nil {
return
}
if c.URL, err = url.Parse(c.uri); err != nil {
var conn net.Conn
if c.Transport == "" {
conn, err = tcp.Dial(c.URL, "554")
} else {
conn, err = websocket.Dial(c.Transport)
}
if err != nil {
return
}
-44
View File
@@ -1,44 +0,0 @@
package rtsp
import (
"crypto/tls"
"errors"
"net"
"net/url"
"strings"
"time"
)
func Dial(uri string) (net.Conn, error) {
u, err := url.Parse(uri)
if err != nil {
return nil, err
}
switch u.Scheme {
case "rtsp":
return dialTCP(u.Host, nil)
case "rtsps":
tlsConf := &tls.Config{ServerName: u.Hostname()}
return dialTCP(u.Host, tlsConf)
case "rtspx":
tlsConf := &tls.Config{InsecureSkipVerify: true}
return dialTCP(u.Host, tlsConf)
}
return nil, errors.New("unsupported scheme: " + u.Scheme)
}
func dialTCP(address string, tlsConf *tls.Config) (net.Conn, error) {
if strings.IndexByte(address, ':') < 0 {
address += ":554"
}
conn, err := net.DialTimeout("tcp", address, time.Second*5)
if tlsConf == nil || err != nil {
return conn, err
}
tlsConn := tls.Client(conn, tlsConf)
return tlsConn, tlsConn.Handshake()
}