forked from External/mediamtx
enable errcheck (#2201)
This commit is contained in:
parent
7001164e2f
commit
659f19f8bb
36 changed files with 240 additions and 132 deletions
|
|
@ -15,13 +15,49 @@ linters:
|
|||
- unconvert
|
||||
- wastedassign
|
||||
- whitespace
|
||||
disable:
|
||||
- errcheck
|
||||
|
||||
issues:
|
||||
exclude-use-default: false
|
||||
|
||||
linters-settings:
|
||||
errcheck:
|
||||
exclude-functions:
|
||||
- io.Copy
|
||||
- (io.Closer).Close
|
||||
- (io.Writer).Write
|
||||
- (hash.Hash).Write
|
||||
- (net.Conn).Close
|
||||
- (net.Conn).SetReadDeadline
|
||||
- (net.Conn).SetWriteDeadline
|
||||
- (*net.TCPConn).SetKeepAlive
|
||||
- (*net.TCPConn).SetKeepAlivePeriod
|
||||
- (*net.TCPConn).SetNoDelay
|
||||
- (net.Listener).Close
|
||||
- (net.PacketConn).Close
|
||||
- (net.PacketConn).SetReadDeadline
|
||||
- (net.PacketConn).SetWriteDeadline
|
||||
- (net/http.ResponseWriter).Write
|
||||
- (*net/http.Server).Serve
|
||||
- (*net/http.Server).ServeTLS
|
||||
- (*net/http.Server).Shutdown
|
||||
- os.Chdir
|
||||
- os.Mkdir
|
||||
- os.MkdirAll
|
||||
- os.Remove
|
||||
- os.RemoveAll
|
||||
- os.Setenv
|
||||
- os.Unsetenv
|
||||
- (*os.File).WriteString
|
||||
- (*os.File).Close
|
||||
- (github.com/datarhei/gosrt.Conn).Close
|
||||
- (github.com/datarhei/gosrt.Conn).SetReadDeadline
|
||||
- (github.com/datarhei/gosrt.Conn).SetWriteDeadline
|
||||
- (*github.com/bluenviron/gortsplib/v3.Client).Close
|
||||
- (*github.com/bluenviron/gortsplib/v3.Server).Close
|
||||
- (*github.com/bluenviron/gortsplib/v3.ServerSession).Close
|
||||
- (*github.com/bluenviron/gortsplib/v3.ServerStream).Close
|
||||
- (*github.com/bluenviron/gortsplib/v3.ServerConn).Close
|
||||
|
||||
govet:
|
||||
enable-all: true
|
||||
disable:
|
||||
|
|
|
|||
|
|
@ -45,7 +45,8 @@ func loadFromFile(fpath string, conf *Conf) (bool, error) {
|
|||
// other configuration files are not
|
||||
if fpath == "mediamtx.yml" || fpath == "rtsp-simple-server.yml" {
|
||||
if _, err := os.Stat(fpath); errors.Is(err, os.ErrNotExist) {
|
||||
conf.UnmarshalJSON(nil) // load defaults
|
||||
// load defaults
|
||||
conf.UnmarshalJSON(nil) //nolint:errcheck
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
|
|
@ -294,7 +295,8 @@ func (conf *Conf) Check() error {
|
|||
pconf := conf.Paths[name]
|
||||
if pconf == nil {
|
||||
pconf = &PathConf{}
|
||||
pconf.UnmarshalJSON(nil) // fill defaults
|
||||
// load defaults
|
||||
pconf.UnmarshalJSON(nil) //nolint:errcheck
|
||||
conf.Paths[name] = pconf
|
||||
}
|
||||
|
||||
|
|
|
|||
3
internal/conf/env/env.go
vendored
3
internal/conf/env/env.go
vendored
|
|
@ -117,7 +117,8 @@ func loadEnvInternal(env map[string]string, prefix string, rv reflect.Value) err
|
|||
if nv == zero {
|
||||
nv = reflect.New(rt.Elem().Elem())
|
||||
if unm, ok := nv.Interface().(json.Unmarshaler); ok {
|
||||
unm.UnmarshalJSON(nil) // load defaults
|
||||
// load defaults
|
||||
unm.UnmarshalJSON(nil) //nolint:errcheck
|
||||
}
|
||||
rv.SetMapIndex(reflect.ValueOf(mapKeyLower), nv)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ func New(confPath string) (*ConfWatcher, error) {
|
|||
|
||||
err = inner.Add(parentPath)
|
||||
if err != nil {
|
||||
inner.Close()
|
||||
inner.Close() //nolint:errcheck
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +120,7 @@ outer:
|
|||
}
|
||||
|
||||
close(w.signal)
|
||||
w.inner.Close()
|
||||
w.inner.Close() //nolint:errcheck
|
||||
}
|
||||
|
||||
// Watch returns a channel that is called after the configuration file has changed.
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@ func newAPI(
|
|||
}
|
||||
|
||||
router := gin.New()
|
||||
router.SetTrustedProxies(nil)
|
||||
router.SetTrustedProxies(nil) //nolint:errcheck
|
||||
|
||||
group := router.Group("/")
|
||||
|
||||
|
|
@ -387,7 +387,7 @@ func (a *api) onConfigPathsAdd(ctx *gin.Context) {
|
|||
newConfPath := &conf.PathConf{}
|
||||
|
||||
// load default values
|
||||
newConfPath.UnmarshalJSON([]byte("{}"))
|
||||
newConfPath.UnmarshalJSON([]byte("{}")) //nolint:errcheck
|
||||
|
||||
fillStruct(newConfPath, in)
|
||||
|
||||
|
|
|
|||
|
|
@ -265,13 +265,14 @@ func TestAPIPathsList(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
defer source.Close()
|
||||
|
||||
source.WritePacketRTP(media0, &rtp.Packet{
|
||||
err = source.WritePacketRTP(media0, &rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
PayloadType: 96,
|
||||
},
|
||||
Payload: []byte{0x01, 0x02, 0x03, 0x04},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
var out pathList
|
||||
httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out)
|
||||
|
|
@ -618,7 +619,7 @@ func TestAPIProtocolList(t *testing.T) {
|
|||
0x00, 0x00, 0x03, 0x00, 0xf0, 0x3c, 0x60, 0xc9, 0x20,
|
||||
},*/
|
||||
|
||||
source.WritePacketRTP(medi, &rtp.Packet{
|
||||
err = source.WritePacketRTP(medi, &rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
|
|
@ -632,6 +633,7 @@ func TestAPIProtocolList(t *testing.T) {
|
|||
0x05,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
}()
|
||||
|
||||
|
|
@ -654,7 +656,7 @@ func TestAPIProtocolList(t *testing.T) {
|
|||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
source.WritePacketRTP(medi, &rtp.Packet{
|
||||
err = source.WritePacketRTP(medi, &rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
|
|
@ -665,6 +667,7 @@ func TestAPIProtocolList(t *testing.T) {
|
|||
},
|
||||
Payload: []byte{0x01, 0x02, 0x03, 0x04},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
<-c.incomingTrack
|
||||
|
||||
|
|
@ -686,7 +689,9 @@ func TestAPIProtocolList(t *testing.T) {
|
|||
|
||||
err = w.WriteH26x(track, 0, 0, true, [][]byte{{1}})
|
||||
require.NoError(t, err)
|
||||
bw.Flush()
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
}
|
||||
|
|
@ -898,7 +903,7 @@ func TestAPIProtocolGet(t *testing.T) {
|
|||
0x00, 0x00, 0x03, 0x00, 0xf0, 0x3c, 0x60, 0xc9, 0x20,
|
||||
},*/
|
||||
|
||||
source.WritePacketRTP(medi, &rtp.Packet{
|
||||
err := source.WritePacketRTP(medi, &rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
|
|
@ -912,6 +917,7 @@ func TestAPIProtocolGet(t *testing.T) {
|
|||
0x05,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
}()
|
||||
|
||||
|
|
@ -934,7 +940,7 @@ func TestAPIProtocolGet(t *testing.T) {
|
|||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
source.WritePacketRTP(medi, &rtp.Packet{
|
||||
err = source.WritePacketRTP(medi, &rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
|
|
@ -945,6 +951,7 @@ func TestAPIProtocolGet(t *testing.T) {
|
|||
},
|
||||
Payload: []byte{0x01, 0x02, 0x03, 0x04},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
<-c.incomingTrack
|
||||
|
||||
|
|
@ -966,7 +973,9 @@ func TestAPIProtocolGet(t *testing.T) {
|
|||
|
||||
err = w.WriteH26x(track, 0, 0, true, [][]byte{{1}})
|
||||
require.NoError(t, err)
|
||||
bw.Flush()
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
}
|
||||
|
|
@ -1237,9 +1246,9 @@ func TestAPIProtocolKick(t *testing.T) {
|
|||
|
||||
err = w.WriteH26x(track, 0, 0, true, [][]byte{{1}})
|
||||
require.NoError(t, err)
|
||||
bw.Flush()
|
||||
|
||||
// time.Sleep(500 * time.Millisecond)
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
var pa string
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ func (p *Core) createResources(initial bool) error {
|
|||
// on Linux, try to raise the number of file descriptors that can be opened
|
||||
// to allow the maximum possible number of clients
|
||||
// do not check for errors
|
||||
rlimit.Raise()
|
||||
rlimit.Raise() //nolint:errcheck
|
||||
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ func newHLSHTTPServer( //nolint:dupl
|
|||
}
|
||||
|
||||
router := gin.New()
|
||||
router.SetTrustedProxies(trustedProxies.ToTrustedProxies())
|
||||
router.SetTrustedProxies(trustedProxies.ToTrustedProxies()) //nolint:errcheck
|
||||
|
||||
router.NoRoute(s.onRequest)
|
||||
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ func TestHLSRead(t *testing.T) {
|
|||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
for i := 0; i < 2; i++ {
|
||||
source.WritePacketRTP(medi, &rtp.Packet{
|
||||
err = source.WritePacketRTP(medi, &rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
|
|
@ -156,6 +156,7 @@ func TestHLSRead(t *testing.T) {
|
|||
0x05, 0x02, 0x03, 0x04, // IDR
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
hc := &http.Client{Transport: &http.Transport{}}
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ func (ts *testHLSManager) onSegment1(ctx *gin.Context) {
|
|||
|
||||
w := mpegts.NewWriter(ctx.Writer, []*mpegts.Track{track1, track2})
|
||||
|
||||
w.WriteMPEG4Audio(track2, 1*90000, [][]byte{{1, 2, 3, 4}})
|
||||
w.WriteMPEG4Audio(track2, 1*90000, [][]byte{{1, 2, 3, 4}}) //nolint:errcheck
|
||||
}
|
||||
|
||||
func (ts *testHLSManager) onSegment2(ctx *gin.Context) {
|
||||
|
|
@ -97,14 +97,14 @@ func (ts *testHLSManager) onSegment2(ctx *gin.Context) {
|
|||
|
||||
w := mpegts.NewWriter(ctx.Writer, []*mpegts.Track{track1, track2})
|
||||
|
||||
w.WriteH26x(track1, 2*90000, 2*90000, true, [][]byte{
|
||||
w.WriteH26x(track1, 2*90000, 2*90000, true, [][]byte{ //nolint:errcheck
|
||||
{7, 1, 2, 3}, // SPS
|
||||
{8}, // PPS
|
||||
})
|
||||
|
||||
w.WriteMPEG4Audio(track2, 2*90000, [][]byte{{1, 2, 3, 4}})
|
||||
w.WriteMPEG4Audio(track2, 2*90000, [][]byte{{1, 2, 3, 4}}) //nolint:errcheck
|
||||
|
||||
w.WriteH26x(track1, 2*90000, 2*90000, true, [][]byte{
|
||||
w.WriteH26x(track1, 2*90000, 2*90000, true, [][]byte{ //nolint:errcheck
|
||||
{5}, // IDR
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ func newMetrics(
|
|||
}
|
||||
|
||||
router := gin.New()
|
||||
router.SetTrustedProxies(nil)
|
||||
router.SetTrustedProxies(nil) //nolint:errcheck
|
||||
|
||||
router.GET("/metrics", m.onMetrics)
|
||||
|
||||
|
|
@ -215,7 +215,7 @@ func (m *metrics) onMetrics(ctx *gin.Context) {
|
|||
}
|
||||
|
||||
ctx.Writer.WriteHeader(http.StatusOK)
|
||||
io.WriteString(ctx.Writer, out)
|
||||
io.WriteString(ctx.Writer, out) //nolint:errcheck
|
||||
}
|
||||
|
||||
// pathManagerSet is called by pathManager.
|
||||
|
|
|
|||
|
|
@ -164,7 +164,16 @@ func (c *rtmpConn) run() {
|
|||
}()
|
||||
}
|
||||
|
||||
err := func() error {
|
||||
err := c.runInner()
|
||||
|
||||
c.ctxCancel()
|
||||
|
||||
c.parent.closeConn(c)
|
||||
|
||||
c.Log(logger.Info, "closed (%v)", err)
|
||||
}
|
||||
|
||||
func (c *rtmpConn) runInner() error {
|
||||
readerErr := make(chan error)
|
||||
go func() {
|
||||
readerErr <- c.runReader()
|
||||
|
|
@ -180,13 +189,6 @@ func (c *rtmpConn) run() {
|
|||
<-readerErr
|
||||
return errors.New("terminated")
|
||||
}
|
||||
}()
|
||||
|
||||
c.ctxCancel()
|
||||
|
||||
c.parent.closeConn(c)
|
||||
|
||||
c.Log(logger.Info, "closed (%v)", err)
|
||||
}
|
||||
|
||||
func (c *rtmpConn) runReader() error {
|
||||
|
|
|
|||
|
|
@ -31,7 +31,12 @@ func newRTMPListener(
|
|||
func (l *rtmpListener) run() {
|
||||
defer l.wg.Done()
|
||||
|
||||
err := func() error {
|
||||
err := l.runInner()
|
||||
|
||||
l.parent.acceptError(err)
|
||||
}
|
||||
|
||||
func (l *rtmpListener) runInner() error {
|
||||
for {
|
||||
conn, err := l.ln.Accept()
|
||||
if err != nil {
|
||||
|
|
@ -40,7 +45,4 @@ func (l *rtmpListener) run() {
|
|||
|
||||
l.parent.newConn(conn)
|
||||
}
|
||||
}()
|
||||
|
||||
l.parent.acceptError(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ func TestRTSPSource(t *testing.T) {
|
|||
|
||||
err = s.Start()
|
||||
require.NoError(t, err)
|
||||
defer s.Wait()
|
||||
defer s.Wait() //nolint:errcheck
|
||||
defer s.Close()
|
||||
|
||||
if source == "udp" || source == "tcp" {
|
||||
|
|
@ -212,7 +212,7 @@ func TestRTSPSourceNoPassword(t *testing.T) {
|
|||
}
|
||||
err = s.Start()
|
||||
require.NoError(t, err)
|
||||
defer s.Wait()
|
||||
defer s.Wait() //nolint:errcheck
|
||||
defer s.Close()
|
||||
|
||||
p, ok := newInstance("rtmp: no\n" +
|
||||
|
|
@ -268,7 +268,7 @@ func TestRTSPSourceRange(t *testing.T) {
|
|||
}
|
||||
err := s.Start()
|
||||
require.NoError(t, err)
|
||||
defer s.Wait()
|
||||
defer s.Wait() //nolint:errcheck
|
||||
defer s.Close()
|
||||
|
||||
var addConf string
|
||||
|
|
|
|||
|
|
@ -32,7 +32,12 @@ func newSRTListener(
|
|||
func (l *srtListener) run() {
|
||||
defer l.wg.Done()
|
||||
|
||||
err := func() error {
|
||||
err := l.runInner()
|
||||
|
||||
l.parent.acceptError(err)
|
||||
}
|
||||
|
||||
func (l *srtListener) runInner() error {
|
||||
for {
|
||||
var sconn *srtConn
|
||||
conn, _, err := l.ln.Accept(func(req srt.ConnRequest) srt.ConnType {
|
||||
|
|
@ -54,7 +59,4 @@ func (l *srtListener) run() {
|
|||
|
||||
sconn.setConn(conn)
|
||||
}
|
||||
}()
|
||||
|
||||
l.parent.acceptError(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,9 @@ func TestSRTServer(t *testing.T) {
|
|||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
bw.Flush()
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
|
|
@ -71,7 +73,9 @@ func TestSRTServer(t *testing.T) {
|
|||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
bw.Flush()
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
|
||||
r, err := mpegts.NewReader(reader)
|
||||
require.NoError(t, err)
|
||||
|
|
|
|||
|
|
@ -51,13 +51,17 @@ func TestSRTSource(t *testing.T) {
|
|||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
bw.Flush()
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
|
||||
<-connected
|
||||
|
||||
err = w.WriteH26x(track, 0, 0, true, [][]byte{{5, 2}})
|
||||
require.NoError(t, err)
|
||||
bw.Flush()
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
|
||||
<-done
|
||||
}()
|
||||
|
|
|
|||
|
|
@ -55,13 +55,17 @@ func TestUDPSource(t *testing.T) {
|
|||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
bw.Flush()
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
|
||||
<-connected
|
||||
|
||||
err = w.WriteH26x(track, 0, 0, true, [][]byte{{5, 2}})
|
||||
require.NoError(t, err)
|
||||
bw.Flush()
|
||||
|
||||
err = bw.Flush()
|
||||
require.NoError(t, err)
|
||||
}()
|
||||
|
||||
medias, baseURL, _, err := c.Describe(u)
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ func newWebRTCHTTPServer( //nolint:dupl
|
|||
}
|
||||
|
||||
router := gin.New()
|
||||
router.SetTrustedProxies(trustedProxies.ToTrustedProxies())
|
||||
router.SetTrustedProxies(trustedProxies.ToTrustedProxies()) //nolint:errcheck
|
||||
router.NoRoute(s.onRequest)
|
||||
|
||||
network, address := restrictNetwork("tcp", address)
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ func TestWebRTCRead(t *testing.T) {
|
|||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
source.WritePacketRTP(medi, &rtp.Packet{
|
||||
err = source.WritePacketRTP(medi, &rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
|
|
@ -253,6 +253,7 @@ func TestWebRTCRead(t *testing.T) {
|
|||
},
|
||||
Payload: []byte{3},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
trak := <-c.incomingTrack
|
||||
|
||||
|
|
@ -289,7 +290,7 @@ func TestWebRTCReadNotFound(t *testing.T) {
|
|||
ICEServers: iceServers,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
defer pc.Close()
|
||||
defer pc.Close() //nolint:errcheck
|
||||
|
||||
_, err = pc.AddTransceiverFromKind(webrtc.RTPCodecTypeVideo)
|
||||
require.NoError(t, err)
|
||||
|
|
|
|||
|
|
@ -47,7 +47,10 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
PayloadType: 105,
|
||||
PayloadMaxSize: webrtcPayloadMaxSize,
|
||||
}
|
||||
encoder.Init()
|
||||
err = encoder.Init()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &webRTCOutgoingTrack{
|
||||
media: videoMedia,
|
||||
|
|
@ -66,7 +69,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
}
|
||||
|
||||
for _, pkt := range packets {
|
||||
webRTCTrak.WriteRTP(pkt)
|
||||
webRTCTrak.WriteRTP(pkt) //nolint:errcheck
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -94,7 +97,10 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
PayloadType: 96,
|
||||
PayloadMaxSize: webrtcPayloadMaxSize,
|
||||
}
|
||||
encoder.Init()
|
||||
err = encoder.Init()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &webRTCOutgoingTrack{
|
||||
media: videoMedia,
|
||||
|
|
@ -113,7 +119,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
}
|
||||
|
||||
for _, pkt := range packets {
|
||||
webRTCTrak.WriteRTP(pkt)
|
||||
webRTCTrak.WriteRTP(pkt) //nolint:errcheck
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -141,7 +147,10 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
PayloadType: 96,
|
||||
PayloadMaxSize: webrtcPayloadMaxSize,
|
||||
}
|
||||
encoder.Init()
|
||||
err = encoder.Init()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &webRTCOutgoingTrack{
|
||||
media: videoMedia,
|
||||
|
|
@ -160,7 +169,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
}
|
||||
|
||||
for _, pkt := range packets {
|
||||
webRTCTrak.WriteRTP(pkt)
|
||||
webRTCTrak.WriteRTP(pkt) //nolint:errcheck
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -188,7 +197,10 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
PayloadType: 96,
|
||||
PayloadMaxSize: webrtcPayloadMaxSize,
|
||||
}
|
||||
encoder.Init()
|
||||
err = encoder.Init()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var lastPTS time.Duration
|
||||
firstNALUReceived := false
|
||||
|
|
@ -220,7 +232,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
}
|
||||
|
||||
for _, pkt := range packets {
|
||||
webRTCTrak.WriteRTP(pkt)
|
||||
webRTCTrak.WriteRTP(pkt) //nolint:errcheck
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -255,7 +267,7 @@ func newWebRTCOutgoingTrackAudio(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
track: webRTCTrak,
|
||||
cb: func(unit formatprocessor.Unit) error {
|
||||
for _, pkt := range unit.GetRTPPackets() {
|
||||
webRTCTrak.WriteRTP(pkt)
|
||||
webRTCTrak.WriteRTP(pkt) //nolint:errcheck
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -285,7 +297,7 @@ func newWebRTCOutgoingTrackAudio(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
track: webRTCTrak,
|
||||
cb: func(unit formatprocessor.Unit) error {
|
||||
for _, pkt := range unit.GetRTPPackets() {
|
||||
webRTCTrak.WriteRTP(pkt)
|
||||
webRTCTrak.WriteRTP(pkt) //nolint:errcheck
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -322,7 +334,7 @@ func newWebRTCOutgoingTrackAudio(medias media.Medias) (*webRTCOutgoingTrack, err
|
|||
track: webRTCTrak,
|
||||
cb: func(unit formatprocessor.Unit) error {
|
||||
for _, pkt := range unit.GetRTPPackets() {
|
||||
webRTCTrak.WriteRTP(pkt)
|
||||
webRTCTrak.WriteRTP(pkt) //nolint:errcheck
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ func (e *Cmd) runOSSpecific() error {
|
|||
|
||||
select {
|
||||
case <-e.terminate:
|
||||
syscall.Kill(cmd.Process.Pid, syscall.SIGINT)
|
||||
syscall.Kill(cmd.Process.Pid, syscall.SIGINT) //nolint:errcheck
|
||||
<-cmdDone
|
||||
return errTerminated
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@ func TestGenericRemovePadding(t *testing.T) {
|
|||
PayloadTyp: 96,
|
||||
RTPMa: "private/90000",
|
||||
}
|
||||
forma.Init()
|
||||
err := forma.Init()
|
||||
require.NoError(t, err)
|
||||
|
||||
p, err := New(1472, forma, false, nil)
|
||||
require.NoError(t, err)
|
||||
|
|
|
|||
|
|
@ -30,7 +30,8 @@ func TestH264DynamicParams(t *testing.T) {
|
|||
RTPPackets: []*rtp.Packet{pkts[0]},
|
||||
},
|
||||
}
|
||||
p.Process(data, true)
|
||||
err = p.Process(data, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, [][]byte{
|
||||
{byte(h264.NALUTypeIDR)},
|
||||
|
|
@ -38,31 +39,37 @@ func TestH264DynamicParams(t *testing.T) {
|
|||
|
||||
pkts, err = enc.Encode([][]byte{{7, 4, 5, 6}}, 0) // SPS
|
||||
require.NoError(t, err)
|
||||
p.Process(&UnitH264{
|
||||
|
||||
err = p.Process(&UnitH264{
|
||||
BaseUnit: BaseUnit{
|
||||
RTPPackets: []*rtp.Packet{pkts[0]},
|
||||
},
|
||||
}, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
pkts, err = enc.Encode([][]byte{{8, 1}}, 0) // PPS
|
||||
require.NoError(t, err)
|
||||
p.Process(&UnitH264{
|
||||
|
||||
err = p.Process(&UnitH264{
|
||||
BaseUnit: BaseUnit{
|
||||
RTPPackets: []*rtp.Packet{pkts[0]},
|
||||
},
|
||||
}, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, []byte{7, 4, 5, 6}, forma.SPS)
|
||||
require.Equal(t, []byte{8, 1}, forma.PPS)
|
||||
|
||||
pkts, err = enc.Encode([][]byte{{byte(h264.NALUTypeIDR)}}, 0)
|
||||
require.NoError(t, err)
|
||||
|
||||
data = &UnitH264{
|
||||
BaseUnit: BaseUnit{
|
||||
RTPPackets: []*rtp.Packet{pkts[0]},
|
||||
},
|
||||
}
|
||||
p.Process(data, true)
|
||||
err = p.Process(data, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, [][]byte{
|
||||
{0x07, 4, 5, 6},
|
||||
|
|
@ -127,7 +134,9 @@ func TestH264OversizedPackets(t *testing.T) {
|
|||
RTPPackets: []*rtp.Packet{pkt},
|
||||
},
|
||||
}
|
||||
p.Process(data, false)
|
||||
err := p.Process(data, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
out = append(out, data.RTPPackets...)
|
||||
}
|
||||
|
||||
|
|
@ -190,7 +199,8 @@ func TestH264EmptyPacket(t *testing.T) {
|
|||
},
|
||||
}
|
||||
|
||||
p.Process(unit, false)
|
||||
err = p.Process(unit, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
// if all NALUs have been removed, no RTP packets must be generated.
|
||||
require.Equal(t, []*rtp.Packet(nil), unit.RTPPackets)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,8 @@ func TestH265DynamicParams(t *testing.T) {
|
|||
RTPPackets: []*rtp.Packet{pkts[0]},
|
||||
},
|
||||
}
|
||||
p.Process(data, true)
|
||||
err = p.Process(data, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, [][]byte{
|
||||
{byte(h265.NALUType_CRA_NUT) << 1, 0},
|
||||
|
|
@ -37,27 +38,33 @@ func TestH265DynamicParams(t *testing.T) {
|
|||
|
||||
pkts, err = enc.Encode([][]byte{{byte(h265.NALUType_VPS_NUT) << 1, 1, 2, 3}}, 0)
|
||||
require.NoError(t, err)
|
||||
p.Process(&UnitH265{
|
||||
|
||||
err = p.Process(&UnitH265{
|
||||
BaseUnit: BaseUnit{
|
||||
RTPPackets: []*rtp.Packet{pkts[0]},
|
||||
},
|
||||
}, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
pkts, err = enc.Encode([][]byte{{byte(h265.NALUType_SPS_NUT) << 1, 4, 5, 6}}, 0)
|
||||
require.NoError(t, err)
|
||||
p.Process(&UnitH265{
|
||||
|
||||
err = p.Process(&UnitH265{
|
||||
BaseUnit: BaseUnit{
|
||||
RTPPackets: []*rtp.Packet{pkts[0]},
|
||||
},
|
||||
}, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
pkts, err = enc.Encode([][]byte{{byte(h265.NALUType_PPS_NUT) << 1, 7, 8, 9}}, 0)
|
||||
require.NoError(t, err)
|
||||
p.Process(&UnitH265{
|
||||
|
||||
err = p.Process(&UnitH265{
|
||||
BaseUnit: BaseUnit{
|
||||
RTPPackets: []*rtp.Packet{pkts[0]},
|
||||
},
|
||||
}, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, []byte{byte(h265.NALUType_VPS_NUT) << 1, 1, 2, 3}, forma.VPS)
|
||||
require.Equal(t, []byte{byte(h265.NALUType_SPS_NUT) << 1, 4, 5, 6}, forma.SPS)
|
||||
|
|
@ -65,12 +72,14 @@ func TestH265DynamicParams(t *testing.T) {
|
|||
|
||||
pkts, err = enc.Encode([][]byte{{byte(h265.NALUType_CRA_NUT) << 1, 0}}, 0)
|
||||
require.NoError(t, err)
|
||||
|
||||
data = &UnitH265{
|
||||
BaseUnit: BaseUnit{
|
||||
RTPPackets: []*rtp.Packet{pkts[0]},
|
||||
},
|
||||
}
|
||||
p.Process(data, true)
|
||||
err = p.Process(data, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, [][]byte{
|
||||
{byte(h265.NALUType_VPS_NUT) << 1, 1, 2, 3},
|
||||
|
|
@ -124,7 +133,9 @@ func TestH265OversizedPackets(t *testing.T) {
|
|||
RTPPackets: []*rtp.Packet{pkt},
|
||||
},
|
||||
}
|
||||
p.Process(data, false)
|
||||
err = p.Process(data, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
out = append(out, data.RTPPackets...)
|
||||
}
|
||||
|
||||
|
|
@ -187,7 +198,8 @@ func TestH265EmptyPacket(t *testing.T) {
|
|||
},
|
||||
}
|
||||
|
||||
p.Process(unit, false)
|
||||
err = p.Process(unit, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
// if all NALUs have been removed, no RTP packets must be generated.
|
||||
require.Equal(t, []*rtp.Packet(nil), unit.RTPPackets)
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ func (w *loggerWriter) WriteHeader(statusCode int) {
|
|||
func (w *loggerWriter) dump() string {
|
||||
var buf bytes.Buffer
|
||||
fmt.Fprintf(&buf, "%s %d %s\n", "HTTP/1.1", w.status, http.StatusText(w.status))
|
||||
w.w.Header().Write(&buf)
|
||||
w.w.Header().Write(&buf) //nolint:errcheck
|
||||
buf.Write([]byte("\n"))
|
||||
if w.buf.Len() > 0 {
|
||||
fmt.Fprintf(&buf, "(body of %d bytes)", w.buf.Len())
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ func (d *destinationFile) log(t time.Time, level Level, format string, args ...i
|
|||
writeTime(&d.buf, t, false)
|
||||
writeLevel(&d.buf, level, false)
|
||||
writeContent(&d.buf, format, args)
|
||||
d.file.Write(d.buf.Bytes())
|
||||
d.file.Write(d.buf.Bytes()) //nolint:errcheck
|
||||
}
|
||||
|
||||
func (d *destinationFile) close() {
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ func (d *destinationStdout) log(t time.Time, level Level, format string, args ..
|
|||
writeTime(&d.buf, t, d.useColor)
|
||||
writeLevel(&d.buf, level, d.useColor)
|
||||
writeContent(&d.buf, format, args)
|
||||
os.Stdout.Write(d.buf.Bytes())
|
||||
os.Stdout.Write(d.buf.Bytes()) //nolint:errcheck
|
||||
}
|
||||
|
||||
func (d *destinationStdout) close() {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ func TestWriter(t *testing.T) {
|
|||
w := NewWriter(&buf)
|
||||
w.SetCount(100)
|
||||
|
||||
w.Write(bytes.Repeat([]byte{0x01}, 64))
|
||||
_, err := w.Write(bytes.Repeat([]byte{0x01}, 64))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, uint64(100+64), w.Count())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -490,6 +490,6 @@ func BenchmarkRead(b *testing.B) {
|
|||
conn := newNoHandshakeConn(&buf)
|
||||
|
||||
for n := 0; n < b.N; n++ {
|
||||
conn.Read()
|
||||
conn.Read() //nolint:errcheck
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,9 +44,12 @@ func (rw *ReadWriter) Read() (Message, error) {
|
|||
rw.w.SetAcknowledgeValue(tmsg.Value)
|
||||
|
||||
case *UserControlPingRequest:
|
||||
rw.w.Write(&UserControlPingResponse{
|
||||
err := rw.w.Write(&UserControlPingResponse{
|
||||
ServerTime: tmsg.ServerTime,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return msg, nil
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ func (r *Reader) Read() (*Message, error) {
|
|||
r.chunkStreams[chunkStreamID] = rc
|
||||
}
|
||||
|
||||
r.br.UnreadByte()
|
||||
r.br.UnreadByte() //nolint:errcheck
|
||||
|
||||
msg, err := rc.readMessage(typ)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ func New(
|
|||
|
||||
// Close closes the connection.
|
||||
func (co *PeerConnection) Close() {
|
||||
co.PeerConnection.Close()
|
||||
co.PeerConnection.Close() //nolint:errcheck
|
||||
<-co.closed
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ func NewServerConn(w http.ResponseWriter, req *http.Request) (*ServerConn, error
|
|||
|
||||
// Close closes a ServerConn.
|
||||
func (c *ServerConn) Close() {
|
||||
c.wc.Close()
|
||||
c.wc.Close() //nolint:errcheck
|
||||
close(c.terminate)
|
||||
}
|
||||
|
||||
|
|
@ -67,10 +67,10 @@ func (c *ServerConn) RemoteAddr() net.Addr {
|
|||
}
|
||||
|
||||
func (c *ServerConn) run() {
|
||||
c.wc.SetReadDeadline(time.Now().Add(pingInterval + pingTimeout))
|
||||
c.wc.SetReadDeadline(time.Now().Add(pingInterval + pingTimeout)) //nolint:errcheck
|
||||
|
||||
c.wc.SetPongHandler(func(string) error {
|
||||
c.wc.SetReadDeadline(time.Now().Add(pingInterval + pingTimeout))
|
||||
c.wc.SetReadDeadline(time.Now().Add(pingInterval + pingTimeout)) //nolint:errcheck
|
||||
return nil
|
||||
})
|
||||
|
||||
|
|
@ -80,13 +80,13 @@ func (c *ServerConn) run() {
|
|||
for {
|
||||
select {
|
||||
case byts := <-c.write:
|
||||
c.wc.SetWriteDeadline(time.Now().Add(writeTimeout))
|
||||
c.wc.SetWriteDeadline(time.Now().Add(writeTimeout)) //nolint:errcheck
|
||||
err := c.wc.WriteMessage(websocket.TextMessage, byts)
|
||||
c.writeErr <- err
|
||||
|
||||
case <-pingTicker.C:
|
||||
c.wc.SetWriteDeadline(time.Now().Add(writeTimeout))
|
||||
c.wc.WriteMessage(websocket.PingMessage, nil)
|
||||
c.wc.SetWriteDeadline(time.Now().Add(writeTimeout)) //nolint:errcheck
|
||||
c.wc.WriteMessage(websocket.PingMessage, nil) //nolint:errcheck
|
||||
|
||||
case <-c.terminate:
|
||||
return
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ func TestServerConn(t *testing.T) {
|
|||
c, res, err := websocket.DefaultDialer.Dial("ws://localhost:6344/", nil)
|
||||
require.NoError(t, err)
|
||||
defer res.Body.Close()
|
||||
defer c.Close()
|
||||
defer c.Close() //nolint:errcheck
|
||||
|
||||
c.SetPingHandler(func(msg string) error {
|
||||
close(pingReceived)
|
||||
|
|
@ -49,7 +49,8 @@ func TestServerConn(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
require.Equal(t, "testing", msg)
|
||||
|
||||
c.ReadMessage()
|
||||
_, _, err = c.ReadMessage()
|
||||
require.Error(t, err)
|
||||
|
||||
<-pingReceived
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ func quoteCredential(v string) string {
|
|||
|
||||
func unquoteCredential(v string) string {
|
||||
var s string
|
||||
json.Unmarshal([]byte("\""+v+"\""), &s)
|
||||
json.Unmarshal([]byte("\""+v+"\""), &s) //nolint:errcheck
|
||||
return s
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue