mirror of
https://github.com/aler9/rtsp-simple-server
synced 2025-10-30 18:46:24 +08:00
update linter settings (#4790)
This commit is contained in:
@@ -67,6 +67,9 @@ linters:
|
||||
disable:
|
||||
- fieldalignment
|
||||
- reflectvaluecompare
|
||||
settings:
|
||||
shadow:
|
||||
strict: true
|
||||
|
||||
formatters:
|
||||
enable:
|
||||
|
||||
@@ -206,7 +206,7 @@ func (m *Manager) authenticateHTTP(req *Request) error {
|
||||
defer res.Body.Close()
|
||||
|
||||
if res.StatusCode < 200 || res.StatusCode > 299 {
|
||||
if resBody, err := io.ReadAll(res.Body); err == nil && len(resBody) != 0 {
|
||||
if resBody, err2 := io.ReadAll(res.Body); err2 == nil && len(resBody) != 0 {
|
||||
return fmt.Errorf("server replied with code %d: %s", res.StatusCode, string(resBody))
|
||||
}
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@ func TestAuthHTTP(t *testing.T) {
|
||||
}
|
||||
|
||||
if outcome == "ok" {
|
||||
err := m.Authenticate(&Request{
|
||||
err = m.Authenticate(&Request{
|
||||
Action: conf.AuthActionPublish,
|
||||
Path: "teststream",
|
||||
Query: "param=value",
|
||||
@@ -255,7 +255,7 @@ func TestAuthHTTP(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
} else {
|
||||
err := m.Authenticate(&Request{
|
||||
err = m.Authenticate(&Request{
|
||||
Action: conf.AuthActionPublish,
|
||||
Path: "teststream",
|
||||
Query: "param=value",
|
||||
@@ -548,7 +548,8 @@ func TestAuthJWTRefresh(t *testing.T) {
|
||||
|
||||
token := jwt.NewWithClaims(jwt.SigningMethodRS256, claims)
|
||||
token.Header[jwkset.HeaderKID] = "test-key-id"
|
||||
ss, err := token.SignedString(key)
|
||||
var ss string
|
||||
ss, err = token.SignedString(key)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = m.Authenticate(&Request{
|
||||
|
||||
2
internal/conf/env/env.go
vendored
2
internal/conf/env/env.go
vendored
@@ -31,7 +31,7 @@ func loadEnvInternal(env map[string]string, prefix string, prv reflect.Value) er
|
||||
rt := prv.Type().Elem()
|
||||
|
||||
if i, ok := prv.Interface().(Unmarshaler); ok {
|
||||
if ev, ok := env[prefix]; ok {
|
||||
if ev, ok2 := env[prefix]; ok2 {
|
||||
if prv.IsNil() {
|
||||
prv.Set(reflect.New(rt))
|
||||
i = prv.Interface().(Unmarshaler)
|
||||
|
||||
@@ -25,7 +25,8 @@ func TestWrite(t *testing.T) {
|
||||
defer w.Close()
|
||||
|
||||
func() {
|
||||
f, err := os.Create(fpath)
|
||||
var f *os.File
|
||||
f, err = os.Create(fpath)
|
||||
require.NoError(t, err)
|
||||
defer f.Close()
|
||||
|
||||
@@ -51,23 +52,23 @@ func TestWriteMultipleTimes(t *testing.T) {
|
||||
defer w.Close()
|
||||
|
||||
func() {
|
||||
f, err := os.Create(fpath)
|
||||
require.NoError(t, err)
|
||||
f, err2 := os.Create(fpath)
|
||||
require.NoError(t, err2)
|
||||
defer f.Close()
|
||||
|
||||
_, err = f.Write([]byte("{}"))
|
||||
require.NoError(t, err)
|
||||
_, err2 = f.Write([]byte("{}"))
|
||||
require.NoError(t, err2)
|
||||
}()
|
||||
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
|
||||
func() {
|
||||
f, err := os.Create(fpath)
|
||||
require.NoError(t, err)
|
||||
f, err2 := os.Create(fpath)
|
||||
require.NoError(t, err2)
|
||||
defer f.Close()
|
||||
|
||||
_, err = f.Write([]byte("{}"))
|
||||
require.NoError(t, err)
|
||||
_, err2 = f.Write([]byte("{}"))
|
||||
require.NoError(t, err2)
|
||||
}()
|
||||
|
||||
select {
|
||||
@@ -98,7 +99,8 @@ func TestDeleteCreate(t *testing.T) {
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
|
||||
func() {
|
||||
f, err := os.Create(fpath)
|
||||
var f *os.File
|
||||
f, err = os.Create(fpath)
|
||||
require.NoError(t, err)
|
||||
defer f.Close()
|
||||
|
||||
@@ -129,12 +131,12 @@ func TestSymlinkDeleteCreate(t *testing.T) {
|
||||
os.Remove(fpath)
|
||||
|
||||
func() {
|
||||
f, err := os.Create(fpath)
|
||||
require.NoError(t, err)
|
||||
f, err2 := os.Create(fpath)
|
||||
require.NoError(t, err2)
|
||||
defer f.Close()
|
||||
|
||||
_, err = f.Write([]byte("{}"))
|
||||
require.NoError(t, err)
|
||||
_, err2 = f.Write([]byte("{}"))
|
||||
require.NoError(t, err2)
|
||||
}()
|
||||
|
||||
select {
|
||||
|
||||
@@ -394,7 +394,7 @@ func TestAPIProtocolListGet(t *testing.T) {
|
||||
case "rtsp conns", "rtsp sessions":
|
||||
source := gortsplib.Client{}
|
||||
|
||||
err := source.StartRecording("rtsp://localhost:8554/mypath?key=val",
|
||||
err = source.StartRecording("rtsp://localhost:8554/mypath?key=val",
|
||||
&description.Session{Medias: []*description.Media{medi}})
|
||||
require.NoError(t, err)
|
||||
defer source.Close()
|
||||
@@ -404,7 +404,7 @@ func TestAPIProtocolListGet(t *testing.T) {
|
||||
TLSConfig: &tls.Config{InsecureSkipVerify: true},
|
||||
}
|
||||
|
||||
err := source.StartRecording("rtsps://localhost:8322/mypath?key=val",
|
||||
err = source.StartRecording("rtsps://localhost:8322/mypath?key=val",
|
||||
&description.Session{Medias: []*description.Media{medi}})
|
||||
require.NoError(t, err)
|
||||
defer source.Close()
|
||||
@@ -427,7 +427,8 @@ func TestAPIProtocolListGet(t *testing.T) {
|
||||
|
||||
rawURL += "127.0.0.1:" + port + "/mypath?key=val"
|
||||
|
||||
u, err := url.Parse(rawURL)
|
||||
var u *url.URL
|
||||
u, err = url.Parse(rawURL)
|
||||
require.NoError(t, err)
|
||||
|
||||
conn := &rtmp.Client{
|
||||
@@ -453,7 +454,7 @@ func TestAPIProtocolListGet(t *testing.T) {
|
||||
|
||||
case "hls":
|
||||
source := gortsplib.Client{}
|
||||
err := source.StartRecording("rtsp://localhost:8554/mypath",
|
||||
err = source.StartRecording("rtsp://localhost:8554/mypath",
|
||||
&description.Session{Medias: []*description.Media{medi}})
|
||||
require.NoError(t, err)
|
||||
defer source.Close()
|
||||
@@ -483,7 +484,7 @@ func TestAPIProtocolListGet(t *testing.T) {
|
||||
0x00, 0x00, 0x03, 0x00, 0xf0, 0x3c, 0x60, 0xc9, 0x20,
|
||||
},*/
|
||||
|
||||
err := source.WritePacketRTP(medi, &rtp.Packet{
|
||||
err2 := source.WritePacketRTP(medi, &rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
@@ -497,25 +498,26 @@ func TestAPIProtocolListGet(t *testing.T) {
|
||||
0x05,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, err2)
|
||||
}
|
||||
}()
|
||||
|
||||
func() {
|
||||
res, err := hc.Get("http://localhost:8888/mypath/index.m3u8")
|
||||
require.NoError(t, err)
|
||||
res, err2 := hc.Get("http://localhost:8888/mypath/index.m3u8")
|
||||
require.NoError(t, err2)
|
||||
defer res.Body.Close()
|
||||
require.Equal(t, 200, res.StatusCode)
|
||||
}()
|
||||
|
||||
case "webrtc":
|
||||
source := gortsplib.Client{}
|
||||
err := source.StartRecording("rtsp://localhost:8554/mypath",
|
||||
err = source.StartRecording("rtsp://localhost:8554/mypath",
|
||||
&description.Session{Medias: []*description.Media{medi}})
|
||||
require.NoError(t, err)
|
||||
defer source.Close()
|
||||
|
||||
u, err := url.Parse("http://localhost:8889/mypath/whep?key=val")
|
||||
var u *url.URL
|
||||
u, err = url.Parse("http://localhost:8889/mypath/whep?key=val")
|
||||
require.NoError(t, err)
|
||||
|
||||
go func() {
|
||||
@@ -549,7 +551,8 @@ func TestAPIProtocolListGet(t *testing.T) {
|
||||
conf := srt.DefaultConfig()
|
||||
conf.StreamId = "publish:mypath:::key=val"
|
||||
|
||||
conn, err := srt.Dial("srt", "localhost:8890", conf)
|
||||
var conn srt.Conn
|
||||
conn, err = srt.Dial("srt", "localhost:8890", conf)
|
||||
require.NoError(t, err)
|
||||
defer conn.Close()
|
||||
|
||||
@@ -927,10 +930,12 @@ func TestAPIProtocolGetNotFound(t *testing.T) {
|
||||
}
|
||||
|
||||
func() {
|
||||
req, err := http.NewRequest(http.MethodGet, "http://localhost:9997/v3/"+pa+"/get/"+uuid.New().String(), nil)
|
||||
var req *http.Request
|
||||
req, err = http.NewRequest(http.MethodGet, "http://localhost:9997/v3/"+pa+"/get/"+uuid.New().String(), nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := hc.Do(req)
|
||||
var res *http.Response
|
||||
res, err = hc.Do(req)
|
||||
require.NoError(t, err)
|
||||
defer res.Body.Close()
|
||||
|
||||
@@ -994,7 +999,7 @@ func TestAPIProtocolKick(t *testing.T) {
|
||||
case "rtsp":
|
||||
source := gortsplib.Client{}
|
||||
|
||||
err := source.StartRecording("rtsp://localhost:8554/mypath",
|
||||
err = source.StartRecording("rtsp://localhost:8554/mypath",
|
||||
&description.Session{Medias: []*description.Media{medi}})
|
||||
require.NoError(t, err)
|
||||
defer source.Close()
|
||||
@@ -1004,13 +1009,14 @@ func TestAPIProtocolKick(t *testing.T) {
|
||||
TLSConfig: &tls.Config{InsecureSkipVerify: true},
|
||||
}
|
||||
|
||||
err := source.StartRecording("rtsps://localhost:8322/mypath",
|
||||
err = source.StartRecording("rtsps://localhost:8322/mypath",
|
||||
&description.Session{Medias: []*description.Media{medi}})
|
||||
require.NoError(t, err)
|
||||
defer source.Close()
|
||||
|
||||
case "rtmp":
|
||||
u, err := url.Parse("rtmp://localhost:1935/mypath")
|
||||
var u *url.URL
|
||||
u, err = url.Parse("rtmp://localhost:1935/mypath")
|
||||
require.NoError(t, err)
|
||||
|
||||
conn := &rtmp.Client{
|
||||
@@ -1032,7 +1038,8 @@ func TestAPIProtocolKick(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
case "webrtc":
|
||||
u, err := url.Parse("http://localhost:8889/mypath/whip")
|
||||
var u *url.URL
|
||||
u, err = url.Parse("http://localhost:8889/mypath/whip")
|
||||
require.NoError(t, err)
|
||||
|
||||
track := &webrtc.OutgoingTrack{
|
||||
@@ -1061,7 +1068,8 @@ func TestAPIProtocolKick(t *testing.T) {
|
||||
conf := srt.DefaultConfig()
|
||||
conf.StreamId = "publish:mypath"
|
||||
|
||||
conn, err := srt.Dial("srt", "localhost:8890", conf)
|
||||
var conn srt.Conn
|
||||
conn, err = srt.Dial("srt", "localhost:8890", conf)
|
||||
require.NoError(t, err)
|
||||
defer conn.Close()
|
||||
|
||||
@@ -1175,10 +1183,12 @@ func TestAPIProtocolKickNotFound(t *testing.T) {
|
||||
}
|
||||
|
||||
func() {
|
||||
req, err := http.NewRequest(http.MethodPost, "http://localhost:9997/v3/"+pa+"/kick/"+uuid.New().String(), nil)
|
||||
var req *http.Request
|
||||
req, err = http.NewRequest(http.MethodPost, "http://localhost:9997/v3/"+pa+"/kick/"+uuid.New().String(), nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := hc.Do(req)
|
||||
var res *http.Response
|
||||
res, err = hc.Do(req)
|
||||
require.NoError(t, err)
|
||||
defer res.Body.Close()
|
||||
|
||||
|
||||
@@ -176,9 +176,9 @@ webrtc_sessions_bytes_sent 0
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
source := gortsplib.Client{}
|
||||
err := source.StartRecording("rtsp://localhost:8554/rtsp_path",
|
||||
err2 := source.StartRecording("rtsp://localhost:8554/rtsp_path",
|
||||
&description.Session{Medias: []*description.Media{test.UniqueMediaH264()}})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, err2)
|
||||
defer source.Close()
|
||||
<-terminate
|
||||
}()
|
||||
@@ -186,9 +186,9 @@ webrtc_sessions_bytes_sent 0
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
source2 := gortsplib.Client{TLSConfig: &tls.Config{InsecureSkipVerify: true}}
|
||||
err := source2.StartRecording("rtsps://localhost:8322/rtsps_path",
|
||||
err2 := source2.StartRecording("rtsps://localhost:8322/rtsps_path",
|
||||
&description.Session{Medias: []*description.Media{test.UniqueMediaH264()}})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, err2)
|
||||
defer source2.Close()
|
||||
<-terminate
|
||||
}()
|
||||
@@ -196,26 +196,26 @@ webrtc_sessions_bytes_sent 0
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
u, err := url.Parse("rtmp://localhost:1935/rtmp_path")
|
||||
require.NoError(t, err)
|
||||
u, err2 := url.Parse("rtmp://localhost:1935/rtmp_path")
|
||||
require.NoError(t, err2)
|
||||
|
||||
conn := &rtmp.Client{
|
||||
URL: u,
|
||||
Publish: true,
|
||||
}
|
||||
err = conn.Initialize(context.Background())
|
||||
require.NoError(t, err)
|
||||
err2 = conn.Initialize(context.Background())
|
||||
require.NoError(t, err2)
|
||||
defer conn.Close()
|
||||
|
||||
w := &rtmp.Writer{
|
||||
Conn: conn,
|
||||
VideoTrack: test.FormatH264,
|
||||
}
|
||||
err = w.Initialize()
|
||||
require.NoError(t, err)
|
||||
err2 = w.Initialize()
|
||||
require.NoError(t, err2)
|
||||
|
||||
err = w.WriteH264(2*time.Second, 2*time.Second, [][]byte{{5, 2, 3, 4}})
|
||||
require.NoError(t, err)
|
||||
err2 = w.WriteH264(2*time.Second, 2*time.Second, [][]byte{{5, 2, 3, 4}})
|
||||
require.NoError(t, err2)
|
||||
|
||||
<-terminate
|
||||
}()
|
||||
@@ -223,27 +223,27 @@ webrtc_sessions_bytes_sent 0
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
u, err := url.Parse("rtmps://localhost:1936/rtmps_path")
|
||||
require.NoError(t, err)
|
||||
u, err2 := url.Parse("rtmps://localhost:1936/rtmps_path")
|
||||
require.NoError(t, err2)
|
||||
|
||||
conn := &rtmp.Client{
|
||||
URL: u,
|
||||
TLSConfig: &tls.Config{InsecureSkipVerify: true},
|
||||
Publish: true,
|
||||
}
|
||||
err = conn.Initialize(context.Background())
|
||||
require.NoError(t, err)
|
||||
err2 = conn.Initialize(context.Background())
|
||||
require.NoError(t, err2)
|
||||
defer conn.Close()
|
||||
|
||||
w := &rtmp.Writer{
|
||||
Conn: conn,
|
||||
VideoTrack: test.FormatH264,
|
||||
}
|
||||
err = w.Initialize()
|
||||
require.NoError(t, err)
|
||||
err2 = w.Initialize()
|
||||
require.NoError(t, err2)
|
||||
|
||||
err = w.WriteH264(2*time.Second, 2*time.Second, [][]byte{{5, 2, 3, 4}})
|
||||
require.NoError(t, err)
|
||||
err2 = w.WriteH264(2*time.Second, 2*time.Second, [][]byte{{5, 2, 3, 4}})
|
||||
require.NoError(t, err2)
|
||||
|
||||
<-terminate
|
||||
}()
|
||||
@@ -251,12 +251,12 @@ webrtc_sessions_bytes_sent 0
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
su, err := url.Parse("http://localhost:8889/webrtc_path/whip")
|
||||
require.NoError(t, err)
|
||||
su, err2 := url.Parse("http://localhost:8889/webrtc_path/whip")
|
||||
require.NoError(t, err2)
|
||||
|
||||
tr := &http.Transport{}
|
||||
defer tr.CloseIdleConnections()
|
||||
hc2 := &http.Client{Transport: tr}
|
||||
tr2 := &http.Transport{}
|
||||
defer tr2.CloseIdleConnections()
|
||||
hc2 := &http.Client{Transport: tr2}
|
||||
|
||||
track := &webrtc.OutgoingTrack{
|
||||
Caps: pwebrtc.RTPCodecCapability{
|
||||
@@ -274,11 +274,11 @@ webrtc_sessions_bytes_sent 0
|
||||
OutgoingTracks: []*webrtc.OutgoingTrack{track},
|
||||
}
|
||||
|
||||
err = s.Initialize(context.Background())
|
||||
require.NoError(t, err)
|
||||
err2 = s.Initialize(context.Background())
|
||||
require.NoError(t, err2)
|
||||
defer checkClose(t, s.Close)
|
||||
|
||||
err = track.WriteRTP(&rtp.Packet{
|
||||
err2 = track.WriteRTP(&rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
@@ -289,7 +289,7 @@ webrtc_sessions_bytes_sent 0
|
||||
},
|
||||
Payload: []byte{1},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, err2)
|
||||
<-terminate
|
||||
}()
|
||||
|
||||
@@ -297,14 +297,14 @@ webrtc_sessions_bytes_sent 0
|
||||
defer wg.Done()
|
||||
|
||||
srtConf := srt.DefaultConfig()
|
||||
address, err := srtConf.UnmarshalURL("srt://localhost:8890?streamid=publish:srt_path")
|
||||
require.NoError(t, err)
|
||||
address, err2 := srtConf.UnmarshalURL("srt://localhost:8890?streamid=publish:srt_path")
|
||||
require.NoError(t, err2)
|
||||
|
||||
err = srtConf.Validate()
|
||||
require.NoError(t, err)
|
||||
err2 = srtConf.Validate()
|
||||
require.NoError(t, err2)
|
||||
|
||||
publisher, err := srt.Dial("srt", address, srtConf)
|
||||
require.NoError(t, err)
|
||||
publisher, err2 := srt.Dial("srt", address, srtConf)
|
||||
require.NoError(t, err2)
|
||||
defer publisher.Close()
|
||||
|
||||
track := &mpegts.Track{
|
||||
@@ -313,18 +313,18 @@ webrtc_sessions_bytes_sent 0
|
||||
|
||||
bw := bufio.NewWriter(publisher)
|
||||
w := &mpegts.Writer{W: bw, Tracks: []*mpegts.Track{track}}
|
||||
err = w.Initialize()
|
||||
require.NoError(t, err)
|
||||
err2 = w.Initialize()
|
||||
require.NoError(t, err2)
|
||||
|
||||
err = w.WriteH264(track, 0, 0, [][]byte{
|
||||
err2 = w.WriteH264(track, 0, 0, [][]byte{
|
||||
test.FormatH264.SPS,
|
||||
test.FormatH264.PPS,
|
||||
{0x05, 1}, // IDR
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, err2)
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
err2 = bw.Flush()
|
||||
require.NoError(t, err2)
|
||||
<-terminate
|
||||
}()
|
||||
|
||||
|
||||
@@ -224,7 +224,7 @@ func (pa *path) run() {
|
||||
if !pa.conf.SourceOnDemand || pa.onDemandStaticSourceState != pathOnDemandStateInitial {
|
||||
source.Close("path is closing")
|
||||
}
|
||||
} else if source, ok := pa.source.(defs.Publisher); ok {
|
||||
} else if source, ok2 := pa.source.(defs.Publisher); ok2 {
|
||||
source.Close()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,8 @@ func TestPathAutoDeletion(t *testing.T) {
|
||||
br := bufio.NewReader(conn)
|
||||
|
||||
if ca == "describe" {
|
||||
u, err := base.ParseURL("rtsp://localhost:8554/mypath")
|
||||
var u *base.URL
|
||||
u, err = base.ParseURL("rtsp://localhost:8554/mypath")
|
||||
require.NoError(t, err)
|
||||
|
||||
byts, _ := base.Request{
|
||||
@@ -50,7 +51,8 @@ func TestPathAutoDeletion(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, base.StatusNotFound, res.StatusCode)
|
||||
} else {
|
||||
u, err := base.ParseURL("rtsp://localhost:8554/mypath/trackID=0")
|
||||
var u *base.URL
|
||||
u, err = base.ParseURL("rtsp://localhost:8554/mypath/trackID=0")
|
||||
require.NoError(t, err)
|
||||
|
||||
byts, _ := base.Request{
|
||||
|
||||
@@ -79,7 +79,8 @@ func TestPathRunOnDemand(t *testing.T) {
|
||||
br := bufio.NewReader(conn)
|
||||
|
||||
if ca == "describe" || ca == "describe and setup" {
|
||||
u, err := base.ParseURL("rtsp://localhost:8554/ondemand?param=value")
|
||||
var u *base.URL
|
||||
u, err = base.ParseURL("rtsp://localhost:8554/ondemand?param=value")
|
||||
require.NoError(t, err)
|
||||
|
||||
byts, _ := base.Request{
|
||||
@@ -107,7 +108,8 @@ func TestPathRunOnDemand(t *testing.T) {
|
||||
}
|
||||
|
||||
if ca == "setup" || ca == "describe and setup" {
|
||||
u, err := base.ParseURL(control)
|
||||
var u *base.URL
|
||||
u, err = base.ParseURL(control)
|
||||
require.NoError(t, err)
|
||||
|
||||
byts, _ := base.Request{
|
||||
@@ -190,7 +192,7 @@ func TestPathRunOnConnect(t *testing.T) {
|
||||
|
||||
c := gortsplib.Client{}
|
||||
|
||||
err := c.StartRecording(
|
||||
err = c.StartRecording(
|
||||
"rtsp://localhost:8554/test",
|
||||
&description.Session{Medias: []*description.Media{test.UniqueMediaH264()}})
|
||||
require.NoError(t, err)
|
||||
@@ -201,7 +203,7 @@ func TestPathRunOnConnect(t *testing.T) {
|
||||
|
||||
c := gortsplib.Client{TLSConfig: &tls.Config{InsecureSkipVerify: true}}
|
||||
|
||||
err := c.StartRecording(
|
||||
err = c.StartRecording(
|
||||
"rtsps://localhost:8322/test",
|
||||
&description.Session{Medias: []*description.Media{test.UniqueMediaH264()}})
|
||||
require.NoError(t, err)
|
||||
@@ -210,7 +212,8 @@ func TestPathRunOnConnect(t *testing.T) {
|
||||
case "rtmp":
|
||||
connType = "rtmpConn"
|
||||
|
||||
u, err := url.Parse("rtmp://127.0.0.1:1935/test")
|
||||
var u *url.URL
|
||||
u, err = url.Parse("rtmp://127.0.0.1:1935/test")
|
||||
require.NoError(t, err)
|
||||
|
||||
conn := &rtmp.Client{
|
||||
@@ -224,7 +227,8 @@ func TestPathRunOnConnect(t *testing.T) {
|
||||
case "rtmps":
|
||||
connType = "rtmpsConn"
|
||||
|
||||
u, err := url.Parse("rtmps://127.0.0.1:1936/test")
|
||||
var u *url.URL
|
||||
u, err = url.Parse("rtmps://127.0.0.1:1936/test")
|
||||
require.NoError(t, err)
|
||||
|
||||
conn := &rtmp.Client{
|
||||
@@ -240,13 +244,15 @@ func TestPathRunOnConnect(t *testing.T) {
|
||||
connType = "srtConn"
|
||||
|
||||
conf := srt.DefaultConfig()
|
||||
address, err := conf.UnmarshalURL("srt://localhost:8890?streamid=publish:test")
|
||||
var address string
|
||||
address, err = conf.UnmarshalURL("srt://localhost:8890?streamid=publish:test")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = conf.Validate()
|
||||
require.NoError(t, err)
|
||||
|
||||
c, err := srt.Dial("srt", address, conf)
|
||||
var c srt.Conn
|
||||
c, err = srt.Dial("srt", address, conf)
|
||||
require.NoError(t, err)
|
||||
defer c.Close()
|
||||
}
|
||||
@@ -254,7 +260,8 @@ func TestPathRunOnConnect(t *testing.T) {
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
}()
|
||||
|
||||
byts, err := os.ReadFile(onConnect)
|
||||
var byts []byte
|
||||
byts, err = os.ReadFile(onConnect)
|
||||
require.NoError(t, err)
|
||||
fields := strings.Split(string(byts[:len(byts)-1]), " ")
|
||||
require.Equal(t, connType, fields[0])
|
||||
@@ -359,7 +366,7 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
|
||||
source := gortsplib.Client{}
|
||||
|
||||
err := source.StartRecording(
|
||||
err = source.StartRecording(
|
||||
"rtsp://localhost:8554/test",
|
||||
&description.Session{Medias: []*description.Media{media0}})
|
||||
require.NoError(t, err)
|
||||
@@ -398,7 +405,8 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
|
||||
switch ca {
|
||||
case "rtsp":
|
||||
u, err := base.ParseURL("rtsp://127.0.0.1:8554/test?query=value")
|
||||
var u *base.URL
|
||||
u, err = base.ParseURL("rtsp://127.0.0.1:8554/test?query=value")
|
||||
require.NoError(t, err)
|
||||
|
||||
reader := gortsplib.Client{
|
||||
@@ -410,7 +418,8 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer reader.Close()
|
||||
|
||||
desc, _, err := reader.Describe(u)
|
||||
var desc *description.Session
|
||||
desc, _, err = reader.Describe(u)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = reader.SetupAll(desc.BaseURL, desc.Medias)
|
||||
@@ -420,7 +429,8 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
case "rtsps":
|
||||
u, err := base.ParseURL("rtsps://127.0.0.1:8322/test?query=value")
|
||||
var u *base.URL
|
||||
u, err = base.ParseURL("rtsps://127.0.0.1:8322/test?query=value")
|
||||
require.NoError(t, err)
|
||||
|
||||
reader := gortsplib.Client{
|
||||
@@ -433,7 +443,8 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer reader.Close()
|
||||
|
||||
desc, _, err := reader.Describe(u)
|
||||
var desc *description.Session
|
||||
desc, _, err = reader.Describe(u)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = reader.SetupAll(desc.BaseURL, desc.Medias)
|
||||
@@ -443,7 +454,8 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
case "rtmp":
|
||||
u, err := url.Parse("rtmp://127.0.0.1:1935/test?query=value")
|
||||
var u *url.URL
|
||||
u, err = url.Parse("rtmp://127.0.0.1:1935/test?query=value")
|
||||
require.NoError(t, err)
|
||||
|
||||
conn := &rtmp.Client{
|
||||
@@ -461,7 +473,8 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
case "rtmps":
|
||||
u, err := url.Parse("rtmps://127.0.0.1:1936/test?query=value")
|
||||
var u *url.URL
|
||||
u, err = url.Parse("rtmps://127.0.0.1:1936/test?query=value")
|
||||
require.NoError(t, err)
|
||||
|
||||
conn := &rtmp.Client{
|
||||
@@ -498,13 +511,15 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
|
||||
case "srt":
|
||||
conf := srt.DefaultConfig()
|
||||
address, err := conf.UnmarshalURL("srt://localhost:8890?streamid=read:test:query=value")
|
||||
var address string
|
||||
address, err = conf.UnmarshalURL("srt://localhost:8890?streamid=read:test:query=value")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = conf.Validate()
|
||||
require.NoError(t, err)
|
||||
|
||||
reader, err := srt.Dial("srt", address, conf)
|
||||
var reader srt.Conn
|
||||
reader, err = srt.Dial("srt", address, conf)
|
||||
require.NoError(t, err)
|
||||
defer reader.Close()
|
||||
|
||||
@@ -513,7 +528,8 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
defer tr.CloseIdleConnections()
|
||||
hc := &http.Client{Transport: tr}
|
||||
|
||||
u, err := url.Parse("http://localhost:8889/test/whep?query=value")
|
||||
var u *url.URL
|
||||
u, err = url.Parse("http://localhost:8889/test/whep?query=value")
|
||||
require.NoError(t, err)
|
||||
|
||||
c := &whip.Client{
|
||||
@@ -547,7 +563,8 @@ func TestPathRunOnRead(t *testing.T) {
|
||||
readerType = "webRTCSession"
|
||||
}
|
||||
|
||||
byts, err := os.ReadFile(onRead)
|
||||
var byts []byte
|
||||
byts, err = os.ReadFile(onRead)
|
||||
require.NoError(t, err)
|
||||
fields := strings.Split(string(byts[:len(byts)-1]), " ")
|
||||
require.Equal(t, "test", fields[0])
|
||||
@@ -656,7 +673,8 @@ func TestPathMaxReaders(t *testing.T) {
|
||||
defer source.Close()
|
||||
|
||||
for i := 0; i < 2; i++ {
|
||||
u, err := base.ParseURL("rtsp://127.0.0.1:8554/mystream")
|
||||
var u *base.URL
|
||||
u, err = base.ParseURL("rtsp://127.0.0.1:8554/mystream")
|
||||
require.NoError(t, err)
|
||||
|
||||
reader := gortsplib.Client{
|
||||
@@ -668,7 +686,8 @@ func TestPathMaxReaders(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer reader.Close()
|
||||
|
||||
desc, _, err := reader.Describe(u)
|
||||
var desc *description.Session
|
||||
desc, _, err = reader.Describe(u)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = reader.SetupAll(desc.BaseURL, desc.Medias)
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"github.com/go-git/go-git/v5"
|
||||
"github.com/go-git/go-git/v5/plumbing"
|
||||
"github.com/go-git/go-git/v5/plumbing/cache"
|
||||
"github.com/go-git/go-git/v5/plumbing/object"
|
||||
"github.com/go-git/go-git/v5/storage/filesystem"
|
||||
)
|
||||
|
||||
@@ -51,7 +52,8 @@ func gitDescribeTags(repo *git.Repository) (string, error) {
|
||||
i := 0
|
||||
|
||||
for {
|
||||
commit, err := cIter.Next()
|
||||
var commit *object.Commit
|
||||
commit, err = cIter.Next()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to get next commit: %w", err)
|
||||
}
|
||||
|
||||
@@ -35,12 +35,12 @@ func (e *Cmd) runOSSpecific(env []string) error {
|
||||
cmdDone := make(chan int)
|
||||
go func() {
|
||||
cmdDone <- func() int {
|
||||
err := cmd.Wait()
|
||||
if err == nil {
|
||||
err2 := cmd.Wait()
|
||||
if err2 == nil {
|
||||
return 0
|
||||
}
|
||||
var ee *exec.ExitError
|
||||
if errors.As(err, &ee) {
|
||||
if errors.As(err2, &ee) {
|
||||
ee.ExitCode()
|
||||
}
|
||||
return 0
|
||||
|
||||
@@ -226,7 +226,8 @@ func TestH264ProcessRTPPacketOversized(t *testing.T) {
|
||||
Payload: []byte{0x1c, 0b01000000, 0x01, 0x02, 0x03, 0x04},
|
||||
},
|
||||
} {
|
||||
data, err := p.ProcessRTPPacket(pkt, time.Time{}, 0, false)
|
||||
var data unit.Unit
|
||||
data, err = p.ProcessRTPPacket(pkt, time.Time{}, 0, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
out = append(out, data.GetRTPPackets()...)
|
||||
|
||||
@@ -213,7 +213,8 @@ func TestH265ProcessRTPPacketOversized(t *testing.T) {
|
||||
Payload: bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04}, 2000/4),
|
||||
},
|
||||
} {
|
||||
data, err := p.ProcessRTPPacket(pkt, time.Time{}, 0, false)
|
||||
var data unit.Unit
|
||||
data, err = p.ProcessRTPPacket(pkt, time.Time{}, 0, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
out = append(out, data.GetRTPPackets()...)
|
||||
|
||||
@@ -168,7 +168,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
if !interfaceIsEmpty(m.hlsServer) {
|
||||
data, err := m.hlsServer.APIMuxersList()
|
||||
var data *defs.APIHLSMuxerList
|
||||
data, err = m.hlsServer.APIMuxersList()
|
||||
if err == nil && len(data.Items) != 0 {
|
||||
for _, i := range data.Items {
|
||||
tags := "{name=\"" + i.Path + "\"}"
|
||||
@@ -183,7 +184,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) {
|
||||
|
||||
if !interfaceIsEmpty(m.rtspServer) { //nolint:dupl
|
||||
func() {
|
||||
data, err := m.rtspServer.APIConnsList()
|
||||
var data *defs.APIRTSPConnsList
|
||||
data, err = m.rtspServer.APIConnsList()
|
||||
if err == nil && len(data.Items) != 0 {
|
||||
for _, i := range data.Items {
|
||||
tags := "{id=\"" + i.ID.String() + "\"}"
|
||||
@@ -199,7 +201,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) {
|
||||
}()
|
||||
|
||||
func() {
|
||||
data, err := m.rtspServer.APISessionsList()
|
||||
var data *defs.APIRTSPSessionList
|
||||
data, err = m.rtspServer.APISessionsList()
|
||||
if err == nil && len(data.Items) != 0 {
|
||||
for _, i := range data.Items {
|
||||
tags := "{id=\"" + i.ID.String() + "\",state=\"" + string(i.State) + "\"}"
|
||||
@@ -233,7 +236,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) {
|
||||
|
||||
if !interfaceIsEmpty(m.rtspsServer) { //nolint:dupl
|
||||
func() {
|
||||
data, err := m.rtspsServer.APIConnsList()
|
||||
var data *defs.APIRTSPConnsList
|
||||
data, err = m.rtspsServer.APIConnsList()
|
||||
if err == nil && len(data.Items) != 0 {
|
||||
for _, i := range data.Items {
|
||||
tags := "{id=\"" + i.ID.String() + "\"}"
|
||||
@@ -249,7 +253,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) {
|
||||
}()
|
||||
|
||||
func() {
|
||||
data, err := m.rtspsServer.APISessionsList()
|
||||
var data *defs.APIRTSPSessionList
|
||||
data, err = m.rtspsServer.APISessionsList()
|
||||
if err == nil && len(data.Items) != 0 {
|
||||
for _, i := range data.Items {
|
||||
tags := "{id=\"" + i.ID.String() + "\",state=\"" + string(i.State) + "\"}"
|
||||
@@ -282,7 +287,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
if !interfaceIsEmpty(m.rtmpServer) {
|
||||
data, err := m.rtmpServer.APIConnsList()
|
||||
var data *defs.APIRTMPConnList
|
||||
data, err = m.rtmpServer.APIConnsList()
|
||||
if err == nil && len(data.Items) != 0 {
|
||||
for _, i := range data.Items {
|
||||
tags := "{id=\"" + i.ID.String() + "\",state=\"" + string(i.State) + "\"}"
|
||||
@@ -298,7 +304,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
if !interfaceIsEmpty(m.rtmpsServer) {
|
||||
data, err := m.rtmpsServer.APIConnsList()
|
||||
var data *defs.APIRTMPConnList
|
||||
data, err = m.rtmpsServer.APIConnsList()
|
||||
if err == nil && len(data.Items) != 0 {
|
||||
for _, i := range data.Items {
|
||||
tags := "{id=\"" + i.ID.String() + "\",state=\"" + string(i.State) + "\"}"
|
||||
@@ -314,7 +321,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
if !interfaceIsEmpty(m.srtServer) {
|
||||
data, err := m.srtServer.APIConnsList()
|
||||
var data *defs.APISRTConnList
|
||||
data, err = m.srtServer.APIConnsList()
|
||||
if err == nil && len(data.Items) != 0 {
|
||||
for _, i := range data.Items {
|
||||
tags := "{id=\"" + i.ID.String() + "\",state=\"" + string(i.State) + "\"}"
|
||||
@@ -428,7 +436,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
if !interfaceIsEmpty(m.webRTCServer) {
|
||||
data, err := m.webRTCServer.APISessionsList()
|
||||
var data *defs.APIWebRTCSessionList
|
||||
data, err = m.webRTCServer.APISessionsList()
|
||||
if err == nil && len(data.Items) != 0 {
|
||||
for _, i := range data.Items {
|
||||
tags := "{id=\"" + i.ID.String() + "\",state=\"" + string(i.State) + "\"}"
|
||||
|
||||
@@ -97,7 +97,7 @@ func (w *muxerFMP4) writeSample(
|
||||
partDurationMP4 := durationGoToMp4(partDuration, w.curTrack.timeScale)
|
||||
|
||||
if (w.curTrack.lastDTS - w.curTrack.firstDTS) >= partDurationMP4 {
|
||||
err := w.innerFlush(false)
|
||||
err = w.innerFlush(false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -90,9 +90,8 @@ func seekAndMux(
|
||||
break
|
||||
}
|
||||
|
||||
segmentStartOffset := seg.Start.Sub(start) // this is positive
|
||||
segmentStartOffset = seg.Start.Sub(start) // this is positive
|
||||
|
||||
var segmentDuration time.Duration
|
||||
segmentDuration, err = segmentFMP4MuxParts(f, segmentStartOffset, duration, firstInit.Tracks, m)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -375,7 +375,7 @@ func TestOnGet(t *testing.T) {
|
||||
for _, track := range p.Tracks {
|
||||
var samples [][]byte
|
||||
for _, sample := range track.Samples {
|
||||
buf, err := sample.GetPayload()
|
||||
buf, err = sample.GetPayload()
|
||||
require.NoError(t, err)
|
||||
samples = append(samples, buf)
|
||||
sample.GetPayload = nil
|
||||
|
||||
@@ -275,7 +275,7 @@ func segmentFMP4ReadDurationFromParts(
|
||||
|
||||
outer:
|
||||
for {
|
||||
_, err := io.ReadFull(r, buf)
|
||||
_, err = io.ReadFull(r, buf)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.H265)
|
||||
|
||||
if tunit.AU == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -106,6 +107,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.H264)
|
||||
|
||||
if tunit.AU == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -149,6 +151,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4Video)
|
||||
|
||||
if tunit.Frame == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -183,6 +186,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG1Video)
|
||||
|
||||
if tunit.Frame == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -216,6 +220,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.Opus)
|
||||
|
||||
if tunit.Packets == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -243,6 +248,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.KLV)
|
||||
|
||||
if tunit.Unit == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -266,6 +272,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4Audio)
|
||||
|
||||
if tunit.AUs == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -291,6 +298,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4AudioLATM)
|
||||
|
||||
if tunit.Element == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -330,6 +338,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4AudioLATM)
|
||||
|
||||
if tunit.Element == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -355,6 +364,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG1Audio)
|
||||
|
||||
if tunit.Frames == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -379,6 +389,7 @@ func FromStream(
|
||||
track,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.AC3)
|
||||
|
||||
if tunit.Frames == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -366,7 +366,7 @@ func marshalItem(item interface{}, buf []byte) int {
|
||||
n := 5
|
||||
|
||||
for _, entry := range item {
|
||||
le := len(entry.Key)
|
||||
le = len(entry.Key)
|
||||
buf[n] = byte(le >> 8)
|
||||
buf[n+1] = byte(le)
|
||||
copy(buf[n+2:], entry.Key)
|
||||
|
||||
@@ -147,6 +147,7 @@ func setupAudio(
|
||||
audioFormatMPEG4AudioLATM,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4AudioLATM)
|
||||
|
||||
if tunit.Element == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ func (r *Reader) Read() (Message, error) {
|
||||
|
||||
switch tmsg := msg.(type) {
|
||||
case *SetChunkSize:
|
||||
err := r.r.SetChunkSize(tmsg.Value)
|
||||
err = r.r.SetChunkSize(tmsg.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ func (rw *ReadWriter) Read() (Message, error) {
|
||||
rw.w.SetAcknowledgeValue(tmsg.Value)
|
||||
|
||||
case *UserControlPingRequest:
|
||||
err := rw.w.Write(&UserControlPingResponse{
|
||||
err = rw.w.Write(&UserControlPingResponse{
|
||||
ServerTime: tmsg.ServerTime,
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
@@ -51,7 +51,7 @@ func (rc *readerChunkStream) readChunk(c chunk.Chunk, bodySize uint32, hasExtend
|
||||
diff := count - rc.mr.lastAckCount
|
||||
|
||||
if diff > (rc.mr.ackWindowSize) {
|
||||
err := rc.mr.onAckNeeded(count)
|
||||
err = rc.mr.onAckNeeded(count)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -453,13 +453,13 @@ func (r *Reader) readTracks() (map[uint8]format.Format, map[uint8]format.Format,
|
||||
}
|
||||
|
||||
case *message.AudioExSequenceStart:
|
||||
err := handleAudioSequenceStart(0, msg)
|
||||
err = handleAudioSequenceStart(0, msg)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
case *message.AudioExCodedFrames:
|
||||
err := handleAudioCodedFrames(0, msg)
|
||||
err = handleAudioCodedFrames(0, msg)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -471,13 +471,13 @@ func (r *Reader) readTracks() (map[uint8]format.Format, map[uint8]format.Format,
|
||||
|
||||
switch wmsg := msg.Wrapped.(type) {
|
||||
case *message.AudioExSequenceStart:
|
||||
err := handleAudioSequenceStart(msg.TrackID, wmsg)
|
||||
err = handleAudioSequenceStart(msg.TrackID, wmsg)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
case *message.AudioExCodedFrames:
|
||||
err := handleAudioCodedFrames(msg.TrackID, wmsg)
|
||||
err = handleAudioCodedFrames(msg.TrackID, wmsg)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
@@ -325,7 +325,8 @@ func (c *ServerConn) Accept() error {
|
||||
}
|
||||
|
||||
for {
|
||||
cmd, err := readCommand(c.mrw)
|
||||
var cmd *message.CommandAMF0
|
||||
cmd, err = readCommand(c.mrw)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -392,7 +392,8 @@ func TestServerConn(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
msg, err := mrw.Read()
|
||||
var msg message.Message
|
||||
msg, err = mrw.Read()
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, &message.SetWindowAckSize{
|
||||
Value: 2500000,
|
||||
|
||||
@@ -137,12 +137,13 @@ func (w *Writer) writeTracks() error {
|
||||
|
||||
if track, ok := w.AudioTrack.(*format.MPEG4Audio); ok {
|
||||
audioConf = track.Config
|
||||
} else if track, ok := w.AudioTrack.(*format.MPEG4AudioLATM); ok {
|
||||
} else if track, ok2 := w.AudioTrack.(*format.MPEG4AudioLATM); ok2 {
|
||||
audioConf = track.StreamMuxConfig.Programs[0].Layers[0].AudioSpecificConfig
|
||||
}
|
||||
|
||||
if audioConf != nil {
|
||||
enc, err := audioConf.Marshal()
|
||||
var enc []byte
|
||||
enc, err = audioConf.Marshal()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -88,8 +88,8 @@ func setupVideoTrack(
|
||||
return nil
|
||||
}
|
||||
|
||||
packets, err := encoder.Encode(tunit.TU)
|
||||
if err != nil {
|
||||
packets, err2 := encoder.Encode(tunit.TU)
|
||||
if err2 != nil {
|
||||
return nil //nolint:nilerr
|
||||
}
|
||||
|
||||
@@ -139,8 +139,8 @@ func setupVideoTrack(
|
||||
return nil
|
||||
}
|
||||
|
||||
packets, err := encoder.Encode(tunit.Frame)
|
||||
if err != nil {
|
||||
packets, err2 := encoder.Encode(tunit.Frame)
|
||||
if err2 != nil {
|
||||
return nil //nolint:nilerr
|
||||
}
|
||||
|
||||
@@ -188,8 +188,8 @@ func setupVideoTrack(
|
||||
return nil
|
||||
}
|
||||
|
||||
packets, err := encoder.Encode(tunit.Frame)
|
||||
if err != nil {
|
||||
packets, err2 := encoder.Encode(tunit.Frame)
|
||||
if err2 != nil {
|
||||
return nil //nolint:nilerr
|
||||
}
|
||||
|
||||
@@ -248,8 +248,8 @@ func setupVideoTrack(
|
||||
}
|
||||
lastPTS = tunit.PTS
|
||||
|
||||
packets, err := encoder.Encode(tunit.AU)
|
||||
if err != nil {
|
||||
packets, err2 := encoder.Encode(tunit.AU)
|
||||
if err2 != nil {
|
||||
return nil //nolint:nilerr
|
||||
}
|
||||
|
||||
@@ -308,8 +308,8 @@ func setupVideoTrack(
|
||||
}
|
||||
lastPTS = tunit.PTS
|
||||
|
||||
packets, err := encoder.Encode(tunit.AU)
|
||||
if err != nil {
|
||||
packets, err2 := encoder.Encode(tunit.AU)
|
||||
if err2 != nil {
|
||||
return nil //nolint:nilerr
|
||||
}
|
||||
|
||||
@@ -535,8 +535,8 @@ func setupAudioTrack(
|
||||
lpcm = al
|
||||
}
|
||||
|
||||
packets, err := encoder.Encode(lpcm)
|
||||
if err != nil {
|
||||
packets, err2 := encoder.Encode(lpcm)
|
||||
if err2 != nil {
|
||||
return nil //nolint:nilerr
|
||||
}
|
||||
|
||||
@@ -613,8 +613,8 @@ func setupAudioTrack(
|
||||
return nil
|
||||
}
|
||||
|
||||
packets, err := encoder.Encode(tunit.Samples)
|
||||
if err != nil {
|
||||
packets, err2 := encoder.Encode(tunit.Samples)
|
||||
if err2 != nil {
|
||||
return nil //nolint:nilerr
|
||||
}
|
||||
|
||||
|
||||
@@ -299,14 +299,14 @@ func (t *IncomingTrack) start() {
|
||||
go func() {
|
||||
buf := make([]byte, 1500)
|
||||
for {
|
||||
n, _, err := t.receiver.Read(buf)
|
||||
if err != nil {
|
||||
n, _, err2 := t.receiver.Read(buf)
|
||||
if err2 != nil {
|
||||
return
|
||||
}
|
||||
|
||||
pkts, err := rtcp.Unmarshal(buf[:n])
|
||||
if err != nil {
|
||||
panic(err)
|
||||
pkts, err2 := rtcp.Unmarshal(buf[:n])
|
||||
if err2 != nil {
|
||||
panic(err2)
|
||||
}
|
||||
|
||||
for _, pkt := range pkts {
|
||||
@@ -324,12 +324,12 @@ func (t *IncomingTrack) start() {
|
||||
defer keyframeTicker.Stop()
|
||||
|
||||
for range keyframeTicker.C {
|
||||
err := t.writeRTCP([]rtcp.Packet{
|
||||
err2 := t.writeRTCP([]rtcp.Packet{
|
||||
&rtcp.PictureLossIndication{
|
||||
MediaSSRC: uint32(t.track.SSRC()),
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
if err2 != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -342,8 +342,8 @@ func (t *IncomingTrack) start() {
|
||||
reorderer.Initialize()
|
||||
|
||||
for {
|
||||
pkt, _, err := t.track.ReadRTP()
|
||||
if err != nil {
|
||||
pkt, _, err2 := t.track.ReadRTP()
|
||||
if err2 != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -353,9 +353,9 @@ func (t *IncomingTrack) start() {
|
||||
// do not return
|
||||
}
|
||||
|
||||
err = t.rtcpReceiver.ProcessPacket(pkt, time.Now(), true)
|
||||
if err != nil {
|
||||
t.log.Log(logger.Warn, err.Error())
|
||||
err2 = t.rtcpReceiver.ProcessPacket(pkt, time.Now(), true)
|
||||
if err2 != nil {
|
||||
t.log.Log(logger.Warn, err2.Error())
|
||||
continue
|
||||
}
|
||||
|
||||
|
||||
@@ -73,14 +73,14 @@ func (t *OutgoingTrack) setup(p *PeerConnection) error {
|
||||
go func() {
|
||||
buf := make([]byte, 1500)
|
||||
for {
|
||||
n, _, err := sender.Read(buf)
|
||||
if err != nil {
|
||||
n, _, err2 := sender.Read(buf)
|
||||
if err2 != nil {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = rtcp.Unmarshal(buf[:n])
|
||||
if err != nil {
|
||||
panic(err)
|
||||
_, err2 = rtcp.Unmarshal(buf[:n])
|
||||
if err2 != nil {
|
||||
panic(err2)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
@@ -26,7 +26,8 @@ func ICEFragmentUnmarshal(buf []byte) ([]*webrtc.ICECandidateInit, error) {
|
||||
return nil, fmt.Errorf("mid attribute is missing")
|
||||
}
|
||||
|
||||
tmp, err := strconv.ParseUint(mid, 10, 16)
|
||||
var tmp uint64
|
||||
tmp, err = strconv.ParseUint(mid, 10, 16)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid mid attribute")
|
||||
}
|
||||
|
||||
@@ -149,6 +149,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.AV1)
|
||||
|
||||
if tunit.TU == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -215,6 +216,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.VP9)
|
||||
|
||||
if tunit.Frame == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -305,6 +307,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.H265)
|
||||
|
||||
if tunit.AU == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -393,6 +396,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.H264)
|
||||
|
||||
if tunit.AU == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -473,6 +477,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4Video)
|
||||
|
||||
if tunit.Frame == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -482,10 +487,10 @@ func (f *formatFMP4) initialize() bool {
|
||||
if bytes.HasPrefix(tunit.Frame, []byte{0, 0, 1, byte(mpeg4video.VisualObjectSequenceStartCode)}) {
|
||||
end := bytes.Index(tunit.Frame[4:], []byte{0, 0, 1, byte(mpeg4video.GroupOfVOPStartCode)})
|
||||
if end >= 0 {
|
||||
config := tunit.Frame[:end+4]
|
||||
config2 := tunit.Frame[:end+4]
|
||||
|
||||
if !bytes.Equal(codec.Config, config) {
|
||||
codec.Config = config
|
||||
if !bytes.Equal(codec.Config, config2) {
|
||||
codec.Config = config2
|
||||
f.updateCodecParams()
|
||||
}
|
||||
}
|
||||
@@ -526,6 +531,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG1Video)
|
||||
|
||||
if tunit.Frame == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -579,6 +585,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MJPEG)
|
||||
|
||||
if tunit.Frame == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -615,6 +622,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.Opus)
|
||||
|
||||
if tunit.Packets == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -651,6 +659,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4Audio)
|
||||
|
||||
if tunit.AUs == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -686,6 +695,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4AudioLATM)
|
||||
|
||||
if tunit.Element == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -722,6 +732,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG1Audio)
|
||||
|
||||
if tunit.Frames == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -781,6 +792,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.AC3)
|
||||
|
||||
if tunit.Frames == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -886,6 +898,7 @@ func (f *formatFMP4) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.LPCM)
|
||||
|
||||
if tunit.Samples == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ func (t *formatFMP4Track) write(sample *sample) error {
|
||||
if (!t.f.hasVideo || t.initTrack.Codec.IsVideo()) &&
|
||||
!t.nextSample.IsNonSyncSample &&
|
||||
(nextDTS-t.f.currentSegment.startDTS) >= t.f.ri.segmentDuration {
|
||||
err := t.f.currentSegment.close()
|
||||
err = t.f.currentSegment.close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -94,6 +94,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.H265)
|
||||
|
||||
if tunit.AU == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -139,6 +140,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.H264)
|
||||
|
||||
if tunit.AU == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -185,6 +187,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4Video)
|
||||
|
||||
if tunit.Frame == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -224,6 +227,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG1Video)
|
||||
|
||||
if tunit.Frame == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -262,6 +266,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.Opus)
|
||||
|
||||
if tunit.Packets == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -291,6 +296,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.KLV)
|
||||
|
||||
if tunit.Unit == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -317,6 +323,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4Audio)
|
||||
|
||||
if tunit.AUs == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -347,6 +354,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG4AudioLATM)
|
||||
|
||||
if tunit.Element == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -382,6 +390,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.MPEG1Audio)
|
||||
|
||||
if tunit.Frames == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -409,6 +418,7 @@ func (f *formatMPEGTS) initialize() bool {
|
||||
forma,
|
||||
func(u unit.Unit) error {
|
||||
tunit := u.(*unit.AC3)
|
||||
|
||||
if tunit.Frames == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ func regexpPathFindPathsWithSegments(pathConf *conf.Path) map[string]struct{} {
|
||||
if !info.IsDir() {
|
||||
var pa Path
|
||||
if ok := pa.Decode(recordPath, fpath); ok {
|
||||
if err := conf.IsValidPathName(pa.Path); err == nil {
|
||||
if err = conf.IsValidPathName(pa.Path); err == nil {
|
||||
if pathConf.Regexp.FindStringSubmatch(pa.Path) != nil {
|
||||
ret[pa.Path] = struct{}{}
|
||||
}
|
||||
|
||||
@@ -187,7 +187,8 @@ func (s *httpServer) onRequest(ctx *gin.Context) {
|
||||
ctx.Writer.Write(hlsIndex)
|
||||
|
||||
default:
|
||||
mux, err := s.parent.getMuxer(serverGetMuxerReq{
|
||||
var mux *muxer
|
||||
mux, err = s.parent.getMuxer(serverGetMuxerReq{
|
||||
path: dir,
|
||||
remoteAddr: httpp.RemoteAddr(ctx),
|
||||
query: ctx.Request.URL.RawQuery,
|
||||
|
||||
@@ -184,7 +184,7 @@ func (m *muxer) runInner() error {
|
||||
case req := <-m.chGetInstance:
|
||||
req.res <- mi
|
||||
|
||||
case err := <-instanceError:
|
||||
case err = <-instanceError:
|
||||
if m.remoteAddr != "" {
|
||||
return err
|
||||
}
|
||||
@@ -208,7 +208,7 @@ func (m *muxer) runInner() error {
|
||||
bytesSent: m.bytesSent,
|
||||
parent: m,
|
||||
}
|
||||
err := mi.initialize()
|
||||
err = mi.initialize()
|
||||
if err != nil {
|
||||
m.Log(logger.Error, err.Error())
|
||||
mi = nil
|
||||
|
||||
@@ -144,20 +144,24 @@ func TestServerNotFound(t *testing.T) {
|
||||
hc := &http.Client{Transport: tr}
|
||||
|
||||
func() {
|
||||
req, err := http.NewRequest(http.MethodGet, "http://myuser:mypass@127.0.0.1:8888/nonexisting/", nil)
|
||||
var req *http.Request
|
||||
req, err = http.NewRequest(http.MethodGet, "http://myuser:mypass@127.0.0.1:8888/nonexisting/", nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := hc.Do(req)
|
||||
var res *http.Response
|
||||
res, err = hc.Do(req)
|
||||
require.NoError(t, err)
|
||||
defer res.Body.Close()
|
||||
require.Equal(t, http.StatusOK, res.StatusCode)
|
||||
}()
|
||||
|
||||
func() {
|
||||
req, err := http.NewRequest(http.MethodGet, "http://myuser:mypass@127.0.0.1:8888/nonexisting/index.m3u8", nil)
|
||||
var req *http.Request
|
||||
req, err = http.NewRequest(http.MethodGet, "http://myuser:mypass@127.0.0.1:8888/nonexisting/index.m3u8", nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := hc.Do(req)
|
||||
var res *http.Response
|
||||
res, err = hc.Do(req)
|
||||
require.NoError(t, err)
|
||||
defer res.Body.Close()
|
||||
require.Equal(t, http.StatusNotFound, res.StatusCode)
|
||||
|
||||
@@ -210,7 +210,7 @@ func (c *conn) runRead() error {
|
||||
case <-c.ctx.Done():
|
||||
return fmt.Errorf("terminated")
|
||||
|
||||
case err := <-stream.ReaderError(c):
|
||||
case err = <-stream.ReaderError(c):
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -275,7 +275,7 @@ func (c *conn) runPublish() error {
|
||||
|
||||
for {
|
||||
c.nconn.SetReadDeadline(time.Now().Add(time.Duration(c.readTimeout)))
|
||||
err := r.Read()
|
||||
err = r.Read()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ func (c *conn) runPublish(streamID *streamID) error {
|
||||
}()
|
||||
|
||||
select {
|
||||
case err := <-readerErr:
|
||||
case err = <-readerErr:
|
||||
sconn.Close()
|
||||
return err
|
||||
|
||||
|
||||
@@ -356,7 +356,7 @@ func (s *session) runRead() (int, error) {
|
||||
case <-pc.Failed():
|
||||
return 0, fmt.Errorf("peer connection closed")
|
||||
|
||||
case err := <-stream.ReaderError(s):
|
||||
case err = <-stream.ReaderError(s):
|
||||
return 0, err
|
||||
|
||||
case <-s.ctx.Done():
|
||||
|
||||
@@ -113,7 +113,7 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error {
|
||||
|
||||
for {
|
||||
select {
|
||||
case err := <-waitErr:
|
||||
case err = <-waitErr:
|
||||
c.Close()
|
||||
return err
|
||||
|
||||
|
||||
@@ -25,7 +25,8 @@ func dumpTar(src io.Reader) error {
|
||||
tr := tar.NewReader(uncompressed)
|
||||
|
||||
for {
|
||||
header, err := tr.Next()
|
||||
var header *tar.Header
|
||||
header, err = tr.Next()
|
||||
if err != nil {
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
@@ -41,7 +42,8 @@ func dumpTar(src io.Reader) error {
|
||||
}
|
||||
|
||||
case tar.TypeReg:
|
||||
f, err := os.OpenFile(header.Name, os.O_WRONLY|os.O_CREATE, header.FileInfo().Mode())
|
||||
var f *os.File
|
||||
f, err = os.OpenFile(header.Name, os.O_WRONLY|os.O_CREATE, header.FileInfo().Mode())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ func (s *Source) runPrimary(params defs.StaticSourceRunParams) error {
|
||||
|
||||
for {
|
||||
select {
|
||||
case err := <-cameraErr:
|
||||
case err = <-cameraErr:
|
||||
return err
|
||||
|
||||
case cnf := <-params.ReloadConf:
|
||||
@@ -301,7 +301,7 @@ func (s *Source) runSecondary(params defs.StaticSourceRunParams) error {
|
||||
defer origStream.RemoveReader(s)
|
||||
|
||||
select {
|
||||
case err := <-origStream.ReaderError(s):
|
||||
case err = <-origStream.ReaderError(s):
|
||||
return err
|
||||
|
||||
case <-r.ctx.Done():
|
||||
|
||||
@@ -58,7 +58,7 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error {
|
||||
|
||||
for {
|
||||
select {
|
||||
case err := <-readDone:
|
||||
case err = <-readDone:
|
||||
ctxCancel()
|
||||
return err
|
||||
|
||||
@@ -124,9 +124,9 @@ func (s *Source) runReader(ctx context.Context, u *url.URL, fingerprint string)
|
||||
go func() {
|
||||
for {
|
||||
conn.NetConn().SetReadDeadline(time.Now().Add(time.Duration(s.ReadTimeout)))
|
||||
err := r.Read()
|
||||
if err != nil {
|
||||
readerErr <- err
|
||||
err2 := r.Read()
|
||||
if err2 != nil {
|
||||
readerErr <- err2
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -138,7 +138,7 @@ func (s *Source) runReader(ctx context.Context, u *url.URL, fingerprint string)
|
||||
<-readerErr
|
||||
return fmt.Errorf("terminated")
|
||||
|
||||
case err := <-readerErr:
|
||||
case err = <-readerErr:
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,14 +150,14 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error {
|
||||
readErr := make(chan error)
|
||||
go func() {
|
||||
readErr <- func() error {
|
||||
desc, _, err := c.Describe(u)
|
||||
if err != nil {
|
||||
return err
|
||||
desc, _, err2 := c.Describe(u)
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
|
||||
err = c.SetupAll(desc.BaseURL, desc.Medias)
|
||||
if err != nil {
|
||||
return err
|
||||
err2 = c.SetupAll(desc.BaseURL, desc.Medias)
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
|
||||
res := s.Parent.SetReady(defs.PathSourceStaticSetReadyReq{
|
||||
@@ -177,14 +177,14 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error {
|
||||
res.Stream,
|
||||
s)
|
||||
|
||||
rangeHeader, err := createRangeHeader(params.Conf)
|
||||
if err != nil {
|
||||
return err
|
||||
rangeHeader, err2 := createRangeHeader(params.Conf)
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
|
||||
_, err = c.Play(rangeHeader)
|
||||
if err != nil {
|
||||
return err
|
||||
_, err2 = c.Play(rangeHeader)
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
|
||||
return c.Wait()
|
||||
@@ -193,7 +193,7 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error {
|
||||
|
||||
for {
|
||||
select {
|
||||
case err := <-readErr:
|
||||
case err = <-readErr:
|
||||
return err
|
||||
|
||||
case <-params.ReloadConf:
|
||||
|
||||
@@ -53,7 +53,7 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error {
|
||||
|
||||
for {
|
||||
select {
|
||||
case err := <-readDone:
|
||||
case err = <-readDone:
|
||||
sconn.Close()
|
||||
return err
|
||||
|
||||
@@ -116,7 +116,7 @@ func (s *Source) runReader(sconn srt.Conn) error {
|
||||
|
||||
for {
|
||||
sconn.SetReadDeadline(time.Now().Add(time.Duration(s.ReadTimeout)))
|
||||
err := r.Read()
|
||||
err = r.Read()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -20,15 +20,15 @@ func TestSource(t *testing.T) {
|
||||
defer ln.Close()
|
||||
|
||||
go func() {
|
||||
req, err := ln.Accept2()
|
||||
require.NoError(t, err)
|
||||
req, err2 := ln.Accept2()
|
||||
require.NoError(t, err2)
|
||||
|
||||
require.Equal(t, "sidname", req.StreamId())
|
||||
err = req.SetPassphrase("ttest1234567")
|
||||
require.NoError(t, err)
|
||||
err2 = req.SetPassphrase("ttest1234567")
|
||||
require.NoError(t, err2)
|
||||
|
||||
conn, err := req.Accept()
|
||||
require.NoError(t, err)
|
||||
conn, err2 := req.Accept()
|
||||
require.NoError(t, err2)
|
||||
defer conn.Close()
|
||||
|
||||
track := &mpegts.Track{
|
||||
@@ -37,16 +37,16 @@ func TestSource(t *testing.T) {
|
||||
|
||||
bw := bufio.NewWriter(conn)
|
||||
w := &mpegts.Writer{W: bw, Tracks: []*mpegts.Track{track}}
|
||||
err = w.Initialize()
|
||||
require.NoError(t, err)
|
||||
err2 = w.Initialize()
|
||||
require.NoError(t, err2)
|
||||
|
||||
err = w.WriteH264(track, 0, 0, [][]byte{{ // IDR
|
||||
err2 = w.WriteH264(track, 0, 0, [][]byte{{ // IDR
|
||||
5, 1,
|
||||
}})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, err2)
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
err2 = bw.Flush()
|
||||
require.NoError(t, err2)
|
||||
|
||||
// wait for internal SRT queue to be written
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
@@ -123,7 +123,7 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error {
|
||||
}()
|
||||
|
||||
select {
|
||||
case err := <-readerErr:
|
||||
case err = <-readerErr:
|
||||
return err
|
||||
|
||||
case <-params.Context.Done():
|
||||
@@ -183,7 +183,7 @@ func (s *Source) runReader(pc net.PacketConn, sourceIP net.IP) error {
|
||||
|
||||
for {
|
||||
pc.SetReadDeadline(time.Now().Add(time.Duration(s.ReadTimeout)))
|
||||
err := r.Read()
|
||||
err = r.Read()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -236,7 +236,7 @@ func (s *Stream) ReaderFormats(reader Reader) []format.Format {
|
||||
for forma, sf := range sm.formats {
|
||||
if _, ok := sf.pausedReaders[sr]; ok {
|
||||
formats = append(formats, forma)
|
||||
} else if _, ok := sf.runningReaders[sr]; ok {
|
||||
} else if _, ok = sf.runningReaders[sr]; ok {
|
||||
formats = append(formats, forma)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user