From 18ddae4c507e5536443ee5f29d3388b1de5cfe30 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sun, 13 Aug 2023 15:21:13 +0200 Subject: [PATCH] enable errcheck --- .golangci.yml | 40 +++++++++++- client.go | 22 ++++--- client_format.go | 5 +- client_media.go | 8 +-- client_play_test.go | 64 ++++++++++++------- client_record_test.go | 17 +++-- client_udp_listener.go | 2 +- pkg/base/body_test.go | 2 +- pkg/base/header.go | 2 +- pkg/base/header_test.go | 2 +- pkg/base/interleaved_frame_test.go | 2 +- pkg/base/request_test.go | 2 +- pkg/base/response_test.go | 2 +- pkg/base/utils.go | 2 +- pkg/bytecounter/bytecounter_test.go | 6 +- pkg/conn/conn.go | 4 +- pkg/formats/format_test.go | 16 ++--- pkg/formats/rtpav1/decoder_test.go | 13 ++-- pkg/formats/rtpav1/encoder.go | 5 +- pkg/formats/rtpav1/encoder_test.go | 6 +- pkg/formats/rtph264/decoder_test.go | 27 ++++---- pkg/formats/rtph264/encoder.go | 5 +- pkg/formats/rtph264/encoder_test.go | 6 +- pkg/formats/rtph265/decoder_test.go | 13 ++-- pkg/formats/rtph265/encoder.go | 5 +- pkg/formats/rtph265/encoder_test.go | 6 +- pkg/formats/rtplpcm/decoder_test.go | 7 +- pkg/formats/rtplpcm/encoder.go | 5 +- pkg/formats/rtplpcm/encoder_test.go | 6 +- pkg/formats/rtpmjpeg/decoder_test.go | 9 +-- pkg/formats/rtpmjpeg/encoder.go | 5 +- pkg/formats/rtpmjpeg/encoder_test.go | 3 +- pkg/formats/rtpmpeg1audio/decoder_test.go | 10 +-- pkg/formats/rtpmpeg1audio/encoder.go | 5 +- pkg/formats/rtpmpeg1audio/encoder_test.go | 6 +- .../rtpmpeg4audiogeneric/decoder_test.go | 13 ++-- pkg/formats/rtpmpeg4audiogeneric/encoder.go | 5 +- .../rtpmpeg4audiogeneric/encoder_test.go | 6 +- pkg/formats/rtpmpeg4audiolatm/decoder_test.go | 13 ++-- pkg/formats/rtpmpeg4audiolatm/encoder.go | 5 +- pkg/formats/rtpmpeg4audiolatm/encoder_test.go | 6 +- pkg/formats/rtpmpeg4video/decoder_test.go | 10 +-- pkg/formats/rtpmpeg4video/encoder.go | 5 +- pkg/formats/rtpmpeg4video/encoder_test.go | 6 +- pkg/formats/rtpsimpleaudio/decoder_test.go | 3 +- pkg/formats/rtpsimpleaudio/encoder.go | 5 +- pkg/formats/rtpsimpleaudio/encoder_test.go | 6 +- pkg/formats/rtpvp8/decoder_test.go | 10 +-- pkg/formats/rtpvp8/encoder.go | 5 +- pkg/formats/rtpvp8/encoder_test.go | 6 +- pkg/formats/rtpvp9/decoder_test.go | 10 +-- pkg/formats/rtpvp9/encoder.go | 5 +- pkg/formats/rtpvp9/encoder_test.go | 6 +- pkg/sdp/sdp_test.go | 2 +- server.go | 2 + server_conn.go | 6 +- server_multicast_writer.go | 4 +- server_play_test.go | 16 +++-- server_record_test.go | 37 +++++++---- server_session.go | 1 + server_session_media.go | 8 +-- server_stream.go | 1 + server_udp_listener.go | 5 +- 63 files changed, 344 insertions(+), 203 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index dadbd3f6..b9fd5c65 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -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: diff --git a/client.go b/client.go index d2b2caf6..98f53eb4 100644 --- a/client.go +++ b/client.go @@ -488,6 +488,8 @@ func (c *Client) StartRecording(address string, medias media.Medias) error { func (c *Client) Close() error { c.ctxCancel() <-c.done + + // TODO: remove return value in next major version return c.closeError } @@ -574,7 +576,7 @@ func (c *Client) doClose() { } if c.baseURL != nil { - c.do(&base.Request{ + c.do(&base.Request{ //nolint:errcheck Method: base.Teardown, URL: c.baseURL, }, true, false) @@ -1289,11 +1291,11 @@ func (c *Client) doSetup( return nil, liberrors.ErrClientTransportHeaderInvalidDelivery{} } - if c.state == clientStatePreRecord || !c.AnyPortEnable { - if thRes.ServerPorts == nil || isAnyPort(thRes.ServerPorts[0]) || isAnyPort(thRes.ServerPorts[1]) { - cm.close() - return nil, liberrors.ErrClientServerPortsNotProvided{} - } + serverPortsValid := thRes.ServerPorts != nil && !isAnyPort(thRes.ServerPorts[0]) && !isAnyPort(thRes.ServerPorts[1]) + + if (c.state == clientStatePreRecord || !c.AnyPortEnable) && !serverPortsValid { + cm.close() + return nil, liberrors.ErrClientServerPortsNotProvided{} } if thRes.Source != nil { @@ -1302,7 +1304,7 @@ func (c *Client) doSetup( cm.udpRTPListener.readIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP } - if thRes.ServerPorts != nil { + if serverPortsValid { if !c.AnyPortEnable { cm.udpRTPListener.readPort = thRes.ServerPorts[0] } @@ -1319,7 +1321,7 @@ func (c *Client) doSetup( cm.udpRTCPListener.readIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP } - if thRes.ServerPorts != nil { + if serverPortsValid { if !c.AnyPortEnable { cm.udpRTCPListener.readPort = thRes.ServerPorts[1] } @@ -1478,10 +1480,10 @@ func (c *Client) doPlay(ra *headers.Range) (*base.Response, error) { if *c.effectiveTransport == TransportUDP { for _, ct := range c.medias { byts, _ := (&rtp.Packet{Header: rtp.Header{Version: 2}}).Marshal() - ct.udpRTPListener.write(byts) + ct.udpRTPListener.write(byts) //nolint:errcheck byts, _ = (&rtcp.ReceiverReport{}).Marshal() - ct.udpRTCPListener.write(byts) + ct.udpRTCPListener.write(byts) //nolint:errcheck } } diff --git a/client_format.go b/client_format.go index e920d80e..609222b9 100644 --- a/client_format.go +++ b/client_format.go @@ -38,12 +38,13 @@ func (ct *clientFormat) start() { if ct.cm.c.state == clientStatePlay { if ct.cm.udpRTPListener != nil { ct.udpReorderer = rtpreorderer.New() + var err error ct.udpRTCPReceiver, err = rtcpreceiver.New( ct.cm.c.udpReceiverReportPeriod, nil, ct.format.ClockRate(), func(pkt rtcp.Packet) { - ct.cm.writePacketRTCP(pkt) + ct.cm.writePacketRTCP(pkt) //nolint:errcheck }) if err != nil { panic(err) @@ -55,7 +56,7 @@ func (ct *clientFormat) start() { ct.rtcpSender = rtcpsender.New( ct.format.ClockRate(), func(pkt rtcp.Packet) { - ct.cm.writePacketRTCP(pkt) + ct.cm.writePacketRTCP(pkt) //nolint:errcheck }) } } diff --git a/client_media.go b/client_media.go index 66496bee..bfc08fe4 100644 --- a/client_media.go +++ b/client_media.go @@ -158,26 +158,26 @@ func (cm *clientMedia) findFormatWithSSRC(ssrc uint32) *clientFormat { func (cm *clientMedia) writePacketRTPInQueueUDP(payload []byte) { atomic.AddUint64(cm.c.BytesSent, uint64(len(payload))) - cm.udpRTPListener.write(payload) + cm.udpRTPListener.write(payload) //nolint:errcheck } func (cm *clientMedia) writePacketRTCPInQueueUDP(payload []byte) { atomic.AddUint64(cm.c.BytesSent, uint64(len(payload))) - cm.udpRTCPListener.write(payload) + cm.udpRTCPListener.write(payload) //nolint:errcheck } func (cm *clientMedia) writePacketRTPInQueueTCP(payload []byte) { atomic.AddUint64(cm.c.BytesSent, uint64(len(payload))) cm.tcpRTPFrame.Payload = payload cm.c.nconn.SetWriteDeadline(time.Now().Add(cm.c.WriteTimeout)) - cm.c.conn.WriteInterleavedFrame(cm.tcpRTPFrame, cm.tcpBuffer) + cm.c.conn.WriteInterleavedFrame(cm.tcpRTPFrame, cm.tcpBuffer) //nolint:errcheck } func (cm *clientMedia) writePacketRTCPInQueueTCP(payload []byte) { atomic.AddUint64(cm.c.BytesSent, uint64(len(payload))) cm.tcpRTCPFrame.Payload = payload cm.c.nconn.SetWriteDeadline(time.Now().Add(cm.c.WriteTimeout)) - cm.c.conn.WriteInterleavedFrame(cm.tcpRTCPFrame, cm.tcpBuffer) + cm.c.conn.WriteInterleavedFrame(cm.tcpRTCPFrame, cm.tcpBuffer) //nolint:errcheck } func (cm *clientMedia) writePacketRTCP(pkt rtcp.Packet) error { diff --git a/client_play_test.go b/client_play_test.go index ffe6e4f3..d6e60530 100644 --- a/client_play_test.go +++ b/client_play_test.go @@ -397,16 +397,18 @@ func TestClientPlay(t *testing.T) { // server -> client (RTP) switch transport { case "udp": - l1s[i].WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ + _, err := l1s[i].WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: clientPorts[i][0], }) + require.NoError(t, err) case "multicast": - l1s[i].WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ + _, err := l1s[i].WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("224.1.0.1"), Port: 25000, }) + require.NoError(t, err) case "tcp", "tls": err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ @@ -900,10 +902,11 @@ func TestClientPlayAnyPort(t *testing.T) { time.Sleep(500 * time.Millisecond) - l1a.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ + _, err = l1a.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[0], }) + require.NoError(t, err) // read RTCP if ca == "random" { @@ -941,7 +944,8 @@ func TestClientPlayAnyPort(t *testing.T) { <-packetRecv if ca == "random" { - c.WritePacketRTCP(med, &testRTCPPacket) + err := c.WritePacketRTCP(med, &testRTCPPacket) + require.NoError(t, err) <-serverRecv } }) @@ -1772,10 +1776,11 @@ func TestClientPlayRedirect(t *testing.T) { require.NoError(t, err) defer l1.Close() - l1.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ + _, err = l1.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[0], }) + require.NoError(t, err) }() }() @@ -1815,22 +1820,24 @@ func TestClientPlayPause(t *testing.T) { defer l1.Close() } - t := time.NewTicker(50 * time.Millisecond) - defer t.Stop() + ti := time.NewTicker(50 * time.Millisecond) + defer ti.Stop() for { select { - case <-t.C: + case <-ti.C: if inTH.Protocol == headers.TransportProtocolUDP { - l1.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ + _, err := l1.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: inTH.ClientPorts[0], }) + require.NoError(t, err) } else { - conn.WriteInterleavedFrame(&base.InterleavedFrame{ + err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, }, make([]byte, 1024)) + require.NoError(t, err) } case <-writerTerminate: @@ -2289,10 +2296,11 @@ func TestClientPlayErrorTimeout(t *testing.T) { if transport == "udp" || transport == "auto" { // write a packet to skip the protocol autodetection feature - l1.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ + _, err = l1.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[0], }) + require.NoError(t, err) } req, err = conn.ReadRequest() @@ -2843,10 +2851,11 @@ func TestClientPlayDifferentSource(t *testing.T) { require.NoError(t, err) // server -> client (RTP) - l1.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ + _, err = l1.WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[0], }) + require.NoError(t, err) req, err = conn.ReadRequest() require.NoError(t, err) @@ -3004,16 +3013,18 @@ func TestClientPlayDecodeErrors(t *testing.T) { switch { //nolint:dupl case ca.proto == "udp" && ca.name == "rtp invalid": - l1.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ + _, err := l1.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[0], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtcp invalid": - l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ + _, err := l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[1], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtp packets lost": byts, _ := rtp.Packet{ @@ -3022,10 +3033,12 @@ func TestClientPlayDecodeErrors(t *testing.T) { SequenceNumber: 30, }, }.Marshal() - l1.WriteTo(byts, &net.UDPAddr{ + + _, err := l1.WriteTo(byts, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[0], }) + require.NoError(t, err) byts, _ = rtp.Packet{ Header: rtp.Header{ @@ -3033,22 +3046,26 @@ func TestClientPlayDecodeErrors(t *testing.T) { SequenceNumber: 100, }, }.Marshal() - l1.WriteTo(byts, &net.UDPAddr{ + + _, err = l1.WriteTo(byts, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[0], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtp too big": - l1.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ + _, err := l1.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[0], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtcp too big": - l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ + _, err := l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[1], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtp unknown format": byts, _ := rtp.Packet{ @@ -3056,20 +3073,22 @@ func TestClientPlayDecodeErrors(t *testing.T) { PayloadType: 111, }, }.Marshal() - l1.WriteTo(byts, &net.UDPAddr{ + + _, err := l1.WriteTo(byts, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[0], }) + require.NoError(t, err) case ca.proto == "tcp" && ca.name == "rtcp invalid": - err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ + err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 1, Payload: []byte{0x01, 0x02}, }, make([]byte, 2048)) require.NoError(t, err) case ca.proto == "tcp" && ca.name == "rtcp too big": - err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ + err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 1, Payload: bytes.Repeat([]byte{0x01, 0x02}, 2000/2), }, make([]byte, 2048)) @@ -3081,7 +3100,8 @@ func TestClientPlayDecodeErrors(t *testing.T) { PayloadType: 111, }, }.Marshal() - err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ + + err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 0, Payload: byts, }, make([]byte, 2048)) diff --git a/client_record_test.go b/client_record_test.go index f1de5d8b..d7af7d4b 100644 --- a/client_record_test.go +++ b/client_record_test.go @@ -226,6 +226,7 @@ func TestClientRecordSerial(t *testing.T) { buf := make([]byte, 2048) n, _, err := l1.ReadFrom(buf) require.NoError(t, err) + var pkt rtp.Packet err = pkt.Unmarshal(buf[:n]) require.NoError(t, err) @@ -234,6 +235,7 @@ func TestClientRecordSerial(t *testing.T) { f, err := conn.ReadInterleavedFrame() require.NoError(t, err) require.Equal(t, 0, f.Channel) + var pkt rtp.Packet err = pkt.Unmarshal(f.Payload) require.NoError(t, err) @@ -242,10 +244,11 @@ func TestClientRecordSerial(t *testing.T) { // server -> client (RTCP) if transport == "udp" { - l2.WriteTo(testRTCPPacketMarshaled, &net.UDPAddr{ + _, err := l2.WriteTo(testRTCPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[1], }) + require.NoError(t, err) } else { err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 1, @@ -294,7 +297,7 @@ func TestClientRecordSerial(t *testing.T) { done := make(chan struct{}) go func() { defer close(done) - c.Wait() + c.Wait() //nolint:errcheck }() err = c.WritePacketRTP(medi, &testRTPPacket) @@ -976,16 +979,18 @@ func TestClientRecordDecodeErrors(t *testing.T) { switch { //nolint:dupl case ca.proto == "udp" && ca.name == "rtcp invalid": - l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ + _, err := l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[1], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtcp too big": - l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ + _, err := l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ClientPorts[1], }) + require.NoError(t, err) case ca.proto == "tcp" && ca.name == "rtcp invalid": err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ @@ -1291,13 +1296,13 @@ func TestClientRecordIgnoreTCPRTPPackets(t *testing.T) { }) require.NoError(t, err) - conn.WriteInterleavedFrame(&base.InterleavedFrame{ + err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, }, make([]byte, 1024)) require.NoError(t, err) - conn.WriteInterleavedFrame(&base.InterleavedFrame{ + err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 1, Payload: testRTCPPacketMarshaled, }, make([]byte, 1024)) diff --git a/client_udp_listener.go b/client_udp_listener.go index 6696f82a..1f3f78a0 100644 --- a/client_udp_listener.go +++ b/client_udp_listener.go @@ -27,7 +27,7 @@ func randInRange(max int) (int, error) { type clientUDPListener struct { anyPortEnable bool writeTimeout time.Duration - pc *net.UDPConn + pc net.PacketConn readFunc readFunc readIP net.IP diff --git a/pkg/base/body_test.go b/pkg/base/body_test.go index 8bf6b1f4..0e55a25d 100644 --- a/pkg/base/body_test.go +++ b/pkg/base/body_test.go @@ -45,7 +45,7 @@ func TestBodyMarshal(t *testing.T) { func FuzzBodyUnmarshal(f *testing.F) { f.Fuzz(func(t *testing.T, a string, b []byte) { var p body - p.unmarshal( + p.unmarshal( //nolint:errcheck Header{ "Content-Length": HeaderValue{a}, }, diff --git a/pkg/base/header.go b/pkg/base/header.go index f138afc0..d5c23a5d 100644 --- a/pkg/base/header.go +++ b/pkg/base/header.go @@ -77,7 +77,7 @@ func (h *Header) unmarshal(br *bufio.Reader) error { break } } - br.UnreadByte() + br.UnreadByte() //nolint:errcheck byts, err = readBytesLimited(br, '\r', headerMaxValueLength) if err != nil { diff --git a/pkg/base/header_test.go b/pkg/base/header_test.go index b5abc3f2..f4322e95 100644 --- a/pkg/base/header_test.go +++ b/pkg/base/header_test.go @@ -134,6 +134,6 @@ func FuzzHeaderUnmarshal(f *testing.F) { f.Fuzz(func(t *testing.T, b []byte) { var h Header - h.unmarshal(bufio.NewReader(bytes.NewBuffer(b))) + h.unmarshal(bufio.NewReader(bytes.NewBuffer(b))) //nolint:errcheck }) } diff --git a/pkg/base/interleaved_frame_test.go b/pkg/base/interleaved_frame_test.go index 289ad2a7..aac069eb 100644 --- a/pkg/base/interleaved_frame_test.go +++ b/pkg/base/interleaved_frame_test.go @@ -57,6 +57,6 @@ func TestInterleavedFrameMarshal(t *testing.T) { func FuzzInterleavedFrameUnmarshal(f *testing.F) { f.Fuzz(func(t *testing.T, b []byte) { var f InterleavedFrame - f.Unmarshal(bufio.NewReader(bytes.NewBuffer(b))) + f.Unmarshal(bufio.NewReader(bytes.NewBuffer(b))) //nolint:errcheck }) } diff --git a/pkg/base/request_test.go b/pkg/base/request_test.go index 2b33e600..57a43346 100644 --- a/pkg/base/request_test.go +++ b/pkg/base/request_test.go @@ -186,6 +186,6 @@ func FuzzRequestUnmarshal(f *testing.F) { f.Fuzz(func(t *testing.T, b []byte) { var req Request - req.Unmarshal(bufio.NewReader(bytes.NewBuffer(b))) + req.Unmarshal(bufio.NewReader(bytes.NewBuffer(b))) //nolint:errcheck }) } diff --git a/pkg/base/response_test.go b/pkg/base/response_test.go index 6d1fed4b..f8709961 100644 --- a/pkg/base/response_test.go +++ b/pkg/base/response_test.go @@ -165,6 +165,6 @@ func FuzzResponseUnmarshal(f *testing.F) { f.Fuzz(func(t *testing.T, b []byte) { var res Response - res.Unmarshal(bufio.NewReader(bytes.NewBuffer(b))) + res.Unmarshal(bufio.NewReader(bytes.NewBuffer(b))) //nolint:errcheck }) } diff --git a/pkg/base/utils.go b/pkg/base/utils.go index bfab4445..d0c43dc2 100644 --- a/pkg/base/utils.go +++ b/pkg/base/utils.go @@ -26,7 +26,7 @@ func readBytesLimited(rb *bufio.Reader, delim byte, n int) ([]byte, error) { } if byts[len(byts)-1] == delim { - rb.Discard(len(byts)) + rb.Discard(len(byts)) //nolint:errcheck return byts, nil } } diff --git a/pkg/bytecounter/bytecounter_test.go b/pkg/bytecounter/bytecounter_test.go index e4c70cf9..2285cd85 100644 --- a/pkg/bytecounter/bytecounter_test.go +++ b/pkg/bytecounter/bytecounter_test.go @@ -10,10 +10,12 @@ import ( func TestByteCounter(t *testing.T) { bc := New(bytes.NewBuffer(nil), nil, nil) - bc.Write([]byte{0x01, 0x02, 0x03, 0x04}) + _, err := bc.Write([]byte{0x01, 0x02, 0x03, 0x04}) + require.NoError(t, err) buf := make([]byte, 2) - bc.Read(buf) + _, err = bc.Read(buf) + require.NoError(t, err) require.Equal(t, uint64(4), bc.BytesSent()) require.Equal(t, uint64(2), bc.BytesReceived()) diff --git a/pkg/conn/conn.go b/pkg/conn/conn.go index e20780c5..9f22851f 100644 --- a/pkg/conn/conn.go +++ b/pkg/conn/conn.go @@ -53,7 +53,7 @@ func (c *Conn) ReadInterleavedFrameOrRequest() (interface{}, error) { if err != nil { return nil, err } - c.br.UnreadByte() + c.br.UnreadByte() //nolint:errcheck if b == base.InterleavedFrameMagicByte { return c.ReadInterleavedFrame() @@ -68,7 +68,7 @@ func (c *Conn) ReadInterleavedFrameOrResponse() (interface{}, error) { if err != nil { return nil, err } - c.br.UnreadByte() + c.br.UnreadByte() //nolint:errcheck if b == base.InterleavedFrameMagicByte { return c.ReadInterleavedFrame() diff --git a/pkg/formats/format_test.go b/pkg/formats/format_test.go index 7c6ca23d..e2acb9ff 100644 --- a/pkg/formats/format_test.go +++ b/pkg/formats/format_test.go @@ -1014,7 +1014,7 @@ func TestUnmarshalAV1Errors(t *testing.T) { func FuzzUnmarshalH264(f *testing.F) { f.Fuzz(func(t *testing.T, sps string, pktMode string) { - Unmarshal("video", 96, "H264/90000", map[string]string{ + Unmarshal("video", 96, "H264/90000", map[string]string{ //nolint:errcheck "sprop-parameter-sets": sps, "packetization-mode": pktMode, }) @@ -1023,7 +1023,7 @@ func FuzzUnmarshalH264(f *testing.F) { func FuzzUnmarshalH265(f *testing.F) { f.Fuzz(func(t *testing.T, a, b, c, d string) { - Unmarshal("video", 96, "H265/90000", map[string]string{ + Unmarshal("video", 96, "H265/90000", map[string]string{ //nolint:errcheck "sprop-vps": a, "sprop-sps": b, "sprop-pps": c, @@ -1034,13 +1034,13 @@ func FuzzUnmarshalH265(f *testing.F) { func FuzzUnmarshalLPCM(f *testing.F) { f.Fuzz(func(t *testing.T, a string) { - Unmarshal("audio", 96, "L16/"+a, nil) + Unmarshal("audio", 96, "L16/"+a, nil) //nolint:errcheck }) } func FuzzUnmarshalMPEG4VideoES(f *testing.F) { f.Fuzz(func(t *testing.T, a, b string) { - Unmarshal("video", 96, "MP4V-ES/90000", map[string]string{ + Unmarshal("video", 96, "MP4V-ES/90000", map[string]string{ //nolint:errcheck "profile-level-id": a, "config": b, }) @@ -1051,13 +1051,13 @@ func FuzzUnmarshalOpus(f *testing.F) { f.Add("48000/a") f.Fuzz(func(t *testing.T, a string) { - Unmarshal("audio", 96, "Opus/"+a, nil) + Unmarshal("audio", 96, "Opus/"+a, nil) //nolint:errcheck }) } func FuzzUnmarshalVorbis(f *testing.F) { f.Fuzz(func(t *testing.T, a, b string) { - Unmarshal("audio", 96, "Vorbis/"+a, map[string]string{ + Unmarshal("audio", 96, "Vorbis/"+a, map[string]string{ //nolint:errcheck "configuration": b, }) }) @@ -1065,7 +1065,7 @@ func FuzzUnmarshalVorbis(f *testing.F) { func FuzzUnmarshalVP8(f *testing.F) { f.Fuzz(func(t *testing.T, a, b string) { - Unmarshal("video", 96, "VP8/90000", map[string]string{ + Unmarshal("video", 96, "VP8/90000", map[string]string{ //nolint:errcheck "max-fr": a, "max-fs": b, }) @@ -1074,7 +1074,7 @@ func FuzzUnmarshalVP8(f *testing.F) { func FuzzUnmarshalVP9(f *testing.F) { f.Fuzz(func(t *testing.T, a, b, c string) { - Unmarshal("video", 96, "VP9/90000", map[string]string{ + Unmarshal("video", 96, "VP9/90000", map[string]string{ //nolint:errcheck "max-fr": a, "max-fs": b, "profile-id": c, diff --git a/pkg/formats/rtpav1/decoder_test.go b/pkg/formats/rtpav1/decoder_test.go index 0051ae0f..efe2d3f2 100644 --- a/pkg/formats/rtpav1/decoder_test.go +++ b/pkg/formats/rtpav1/decoder_test.go @@ -12,7 +12,8 @@ func TestDecode(t *testing.T) { for _, ca := range cases { t.Run(ca.name, func(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) var obus [][]byte @@ -33,8 +34,8 @@ func TestDecode(t *testing.T) { func TestDecoderErrorLimit(t *testing.T) { d := &Decoder{} - d.Init() - var err error + err := d.Init() + require.NoError(t, err) for i := 0; i <= av1.MaxOBUsPerTemporalUnit; i++ { _, _, err = d.DecodeUntilMarker(&rtp.Packet{ @@ -56,9 +57,9 @@ func TestDecoderErrorLimit(t *testing.T) { func FuzzDecoder(f *testing.F) { f.Fuzz(func(t *testing.T, a []byte, am bool, b []byte, bm bool) { d := &Decoder{} - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: am, @@ -70,7 +71,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: bm, diff --git a/pkg/formats/rtpav1/encoder.go b/pkg/formats/rtpav1/encoder.go index 6c2cb731..a691fe20 100644 --- a/pkg/formats/rtpav1/encoder.go +++ b/pkg/formats/rtpav1/encoder.go @@ -11,7 +11,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -74,7 +75,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtpav1/encoder_test.go b/pkg/formats/rtpav1/encoder_test.go index 4fa4db57..acdb564d 100644 --- a/pkg/formats/rtpav1/encoder_test.go +++ b/pkg/formats/rtpav1/encoder_test.go @@ -990,7 +990,8 @@ func TestEncode(t *testing.T) { InitialSequenceNumber: uint16Ptr(0x44ed), InitialTimestamp: uint32Ptr(0x88776655), } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.obus, 0) require.NoError(t, err) @@ -1003,7 +1004,8 @@ func TestEncodeRandomInitialState(t *testing.T) { e := &Encoder{ PayloadType: 96, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtph264/decoder_test.go b/pkg/formats/rtph264/decoder_test.go index 810db4ab..f8136b84 100644 --- a/pkg/formats/rtph264/decoder_test.go +++ b/pkg/formats/rtph264/decoder_test.go @@ -13,7 +13,8 @@ func TestDecode(t *testing.T) { for _, ca := range cases { t.Run(ca.name, func(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) var nalus [][]byte @@ -40,9 +41,10 @@ func TestDecode(t *testing.T) { func TestDecodeCorruptedFragment(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) - _, _, err := d.Decode(&rtp.Packet{ + _, _, err = d.Decode(&rtp.Packet{ Header: rtp.Header{ Version: 2, Marker: false, @@ -78,7 +80,8 @@ func TestDecodeCorruptedFragment(t *testing.T) { func TestDecodeSTAPAWithPadding(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) pkt := rtp.Packet{ Header: rtp.Header{ @@ -107,7 +110,8 @@ func TestDecodeSTAPAWithPadding(t *testing.T) { func TestDecodeAnnexB(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) nalus, _, err := d.Decode(&rtp.Packet{ Header: rtp.Header{ @@ -154,7 +158,8 @@ func TestDecodeAnnexB(t *testing.T) { func TestDecodeUntilMarker(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) nalus, _, err := d.DecodeUntilMarker(&rtp.Packet{ Header: rtp.Header{ @@ -187,8 +192,8 @@ func TestDecodeUntilMarker(t *testing.T) { func TestDecoderErrorLimit(t *testing.T) { d := &Decoder{} - d.Init() - var err error + err := d.Init() + require.NoError(t, err) for i := 0; i <= h264.MaxNALUsPerAccessUnit; i++ { _, _, err = d.DecodeUntilMarker(&rtp.Packet{ @@ -210,9 +215,9 @@ func TestDecoderErrorLimit(t *testing.T) { func FuzzDecoder(f *testing.F) { f.Fuzz(func(t *testing.T, a []byte, b []byte) { d := &Decoder{} - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: false, @@ -224,7 +229,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: false, diff --git a/pkg/formats/rtph264/encoder.go b/pkg/formats/rtph264/encoder.go index 5ec7910a..0eabe150 100644 --- a/pkg/formats/rtph264/encoder.go +++ b/pkg/formats/rtph264/encoder.go @@ -12,7 +12,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -81,7 +82,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtph264/encoder_test.go b/pkg/formats/rtph264/encoder_test.go index 6b0770dd..e47f05f8 100644 --- a/pkg/formats/rtph264/encoder_test.go +++ b/pkg/formats/rtph264/encoder_test.go @@ -287,7 +287,8 @@ func TestEncode(t *testing.T) { InitialSequenceNumber: uint16Ptr(0x44ed), InitialTimestamp: uint32Ptr(0x88776655), } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.nalus, 0) require.NoError(t, err) @@ -300,7 +301,8 @@ func TestEncodeRandomInitialState(t *testing.T) { e := &Encoder{ PayloadType: 96, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtph265/decoder_test.go b/pkg/formats/rtph265/decoder_test.go index 8bc9e53a..200ac5a2 100644 --- a/pkg/formats/rtph265/decoder_test.go +++ b/pkg/formats/rtph265/decoder_test.go @@ -12,7 +12,8 @@ func TestDecode(t *testing.T) { for _, ca := range cases { t.Run(ca.name, func(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) var nalus [][]byte @@ -39,8 +40,8 @@ func TestDecode(t *testing.T) { func TestDecoderErrorLimit(t *testing.T) { d := &Decoder{} - d.Init() - var err error + err := d.Init() + require.NoError(t, err) for i := 0; i <= h265.MaxNALUsPerAccessUnit; i++ { _, _, err = d.DecodeUntilMarker(&rtp.Packet{ @@ -62,9 +63,9 @@ func TestDecoderErrorLimit(t *testing.T) { func FuzzDecoder(f *testing.F) { f.Fuzz(func(t *testing.T, a []byte, b []byte) { d := &Decoder{} - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: false, @@ -76,7 +77,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: false, diff --git a/pkg/formats/rtph265/encoder.go b/pkg/formats/rtph265/encoder.go index 3bf138bc..fde42f3c 100644 --- a/pkg/formats/rtph265/encoder.go +++ b/pkg/formats/rtph265/encoder.go @@ -11,7 +11,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -81,7 +82,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtph265/encoder_test.go b/pkg/formats/rtph265/encoder_test.go index 266c58e8..d1afcd94 100644 --- a/pkg/formats/rtph265/encoder_test.go +++ b/pkg/formats/rtph265/encoder_test.go @@ -140,7 +140,8 @@ func TestEncode(t *testing.T) { InitialSequenceNumber: uint16Ptr(0x44ed), InitialTimestamp: uint32Ptr(0x88776655), } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.nalus, 0) require.NoError(t, err) @@ -153,7 +154,8 @@ func TestEncodeRandomInitialState(t *testing.T) { e := &Encoder{ PayloadType: 96, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtplpcm/decoder_test.go b/pkg/formats/rtplpcm/decoder_test.go index 8545e9a4..b0399a42 100644 --- a/pkg/formats/rtplpcm/decoder_test.go +++ b/pkg/formats/rtplpcm/decoder_test.go @@ -15,7 +15,8 @@ func TestDecode(t *testing.T) { SampleRate: 48000, ChannelCount: 2, } - d.Init() + err := d.Init() + require.NoError(t, err) var samples []byte @@ -37,9 +38,9 @@ func FuzzDecoder(f *testing.F) { SampleRate: 48000, ChannelCount: 2, } - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: false, diff --git a/pkg/formats/rtplpcm/encoder.go b/pkg/formats/rtplpcm/encoder.go index b409138f..8303e2ba 100644 --- a/pkg/formats/rtplpcm/encoder.go +++ b/pkg/formats/rtplpcm/encoder.go @@ -11,7 +11,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -80,7 +81,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtplpcm/encoder_test.go b/pkg/formats/rtplpcm/encoder_test.go index 4afe7d5c..cfe7514c 100644 --- a/pkg/formats/rtplpcm/encoder_test.go +++ b/pkg/formats/rtplpcm/encoder_test.go @@ -80,7 +80,8 @@ func TestEncode(t *testing.T) { SampleRate: 48000, ChannelCount: 2, } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.samples, 0) require.NoError(t, err) @@ -96,7 +97,8 @@ func TestEncodeRandomInitialState(t *testing.T) { SampleRate: 48000, ChannelCount: 2, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtpmjpeg/decoder_test.go b/pkg/formats/rtpmjpeg/decoder_test.go index e9444b87..c2e8f3a6 100644 --- a/pkg/formats/rtpmjpeg/decoder_test.go +++ b/pkg/formats/rtpmjpeg/decoder_test.go @@ -11,7 +11,8 @@ func TestDecode(t *testing.T) { for _, ca := range cases { t.Run(ca.name, func(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) for _, pkt := range ca.pkts { image, _, err := d.Decode(pkt) @@ -29,9 +30,9 @@ func TestDecode(t *testing.T) { func FuzzDecoder(f *testing.F) { f.Fuzz(func(t *testing.T, a []byte, am bool, b []byte, bm bool) { d := &Decoder{} - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: am, @@ -43,7 +44,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: bm, diff --git a/pkg/formats/rtpmjpeg/encoder.go b/pkg/formats/rtpmjpeg/encoder.go index a7bdb3b8..a7add587 100644 --- a/pkg/formats/rtpmjpeg/encoder.go +++ b/pkg/formats/rtpmjpeg/encoder.go @@ -14,7 +14,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -74,7 +75,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtpmjpeg/encoder_test.go b/pkg/formats/rtpmjpeg/encoder_test.go index c1a2e2ee..6966ae9d 100644 --- a/pkg/formats/rtpmjpeg/encoder_test.go +++ b/pkg/formats/rtpmjpeg/encoder_test.go @@ -521,7 +521,8 @@ func TestEncode(t *testing.T) { InitialSequenceNumber: uint16Ptr(0x44ed), InitialTimestamp: uint32Ptr(2289528607), } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.image, 0) require.NoError(t, err) diff --git a/pkg/formats/rtpmpeg1audio/decoder_test.go b/pkg/formats/rtpmpeg1audio/decoder_test.go index 68d86a04..b1808b91 100644 --- a/pkg/formats/rtpmpeg1audio/decoder_test.go +++ b/pkg/formats/rtpmpeg1audio/decoder_test.go @@ -11,10 +11,10 @@ func TestDecode(t *testing.T) { for _, ca := range cases { t.Run(ca.name, func(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) var frames [][]byte - var err error for _, pkt := range ca.pkts { frames, _, err = d.Decode(pkt) @@ -29,9 +29,9 @@ func TestDecode(t *testing.T) { func FuzzDecoder(f *testing.F) { f.Fuzz(func(t *testing.T, a []byte, b []byte) { d := &Decoder{} - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, PayloadType: 14, @@ -42,7 +42,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, PayloadType: 14, diff --git a/pkg/formats/rtpmpeg1audio/encoder.go b/pkg/formats/rtpmpeg1audio/encoder.go index 7d8a6c48..9c66eadc 100644 --- a/pkg/formats/rtpmpeg1audio/encoder.go +++ b/pkg/formats/rtpmpeg1audio/encoder.go @@ -11,7 +11,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -79,7 +80,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtpmpeg1audio/encoder_test.go b/pkg/formats/rtpmpeg1audio/encoder_test.go index eb5fe935..c95e3132 100644 --- a/pkg/formats/rtpmpeg1audio/encoder_test.go +++ b/pkg/formats/rtpmpeg1audio/encoder_test.go @@ -477,7 +477,8 @@ func TestEncode(t *testing.T) { InitialTimestamp: uint32Ptr(0x88776655), PayloadMaxSize: 400, } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.frames, 0) require.NoError(t, err) @@ -488,7 +489,8 @@ func TestEncode(t *testing.T) { func TestEncodeRandomInitialState(t *testing.T) { e := &Encoder{} - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtpmpeg4audiogeneric/decoder_test.go b/pkg/formats/rtpmpeg4audiogeneric/decoder_test.go index 61e8e0de..0d3b570f 100644 --- a/pkg/formats/rtpmpeg4audiogeneric/decoder_test.go +++ b/pkg/formats/rtpmpeg4audiogeneric/decoder_test.go @@ -16,7 +16,8 @@ func TestDecode(t *testing.T) { IndexLength: ca.indexLength, IndexDeltaLength: ca.indexDeltaLength, } - d.Init() + err := d.Init() + require.NoError(t, err) var aus [][]byte @@ -48,7 +49,8 @@ func TestDecodeADTS(t *testing.T) { IndexLength: 3, IndexDeltaLength: 3, } - d.Init() + err := d.Init() + require.NoError(t, err) for i := 0; i < 2; i++ { aus, _, err := d.Decode(&rtp.Packet{ @@ -78,9 +80,10 @@ func FuzzDecoder(f *testing.F) { IndexLength: 3, IndexDeltaLength: 3, } - d.Init() + err := d.Init() + require.NoError(t, err) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: am, @@ -92,7 +95,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: bm, diff --git a/pkg/formats/rtpmpeg4audiogeneric/encoder.go b/pkg/formats/rtpmpeg4audiogeneric/encoder.go index 5dcc4646..208e1276 100644 --- a/pkg/formats/rtpmpeg4audiogeneric/encoder.go +++ b/pkg/formats/rtpmpeg4audiogeneric/encoder.go @@ -12,7 +12,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -87,7 +88,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtpmpeg4audiogeneric/encoder_test.go b/pkg/formats/rtpmpeg4audiogeneric/encoder_test.go index 24662c53..61754f30 100644 --- a/pkg/formats/rtpmpeg4audiogeneric/encoder_test.go +++ b/pkg/formats/rtpmpeg4audiogeneric/encoder_test.go @@ -491,7 +491,8 @@ func TestEncode(t *testing.T) { IndexLength: ca.indexLength, IndexDeltaLength: ca.indexDeltaLength, } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.aus, 0) require.NoError(t, err) @@ -508,7 +509,8 @@ func TestEncodeRandomInitialState(t *testing.T) { IndexLength: 3, IndexDeltaLength: 3, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtpmpeg4audiolatm/decoder_test.go b/pkg/formats/rtpmpeg4audiolatm/decoder_test.go index 5f0afe77..a0292633 100644 --- a/pkg/formats/rtpmpeg4audiolatm/decoder_test.go +++ b/pkg/formats/rtpmpeg4audiolatm/decoder_test.go @@ -14,10 +14,10 @@ func TestDecode(t *testing.T) { d := &Decoder{ Config: ca.config, } - d.Init() + err := d.Init() + require.NoError(t, err) var au []byte - var err error for _, pkt := range ca.pkts { clone := pkt.Clone() @@ -56,7 +56,8 @@ func TestDecodeOtherData(t *testing.T) { OtherDataLenBits: 16, }, } - d.Init() + err := d.Init() + require.NoError(t, err) au, _, err := d.Decode(&rtp.Packet{ Header: rtp.Header{ @@ -92,9 +93,9 @@ func FuzzDecoder(f *testing.F) { }}, }, } - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: am, @@ -106,7 +107,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: bm, diff --git a/pkg/formats/rtpmpeg4audiolatm/encoder.go b/pkg/formats/rtpmpeg4audiolatm/encoder.go index ab5bf690..348a86e9 100644 --- a/pkg/formats/rtpmpeg4audiolatm/encoder.go +++ b/pkg/formats/rtpmpeg4audiolatm/encoder.go @@ -12,7 +12,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -82,7 +83,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtpmpeg4audiolatm/encoder_test.go b/pkg/formats/rtpmpeg4audiolatm/encoder_test.go index 59c421c5..46a3f8df 100644 --- a/pkg/formats/rtpmpeg4audiolatm/encoder_test.go +++ b/pkg/formats/rtpmpeg4audiolatm/encoder_test.go @@ -145,7 +145,8 @@ func TestEncode(t *testing.T) { InitialSequenceNumber: uint16Ptr(0x44ed), InitialTimestamp: uint32Ptr(0x88776655), } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.au, 0) require.NoError(t, err) @@ -170,7 +171,8 @@ func TestEncodeRandomInitialState(t *testing.T) { }}, }, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtpmpeg4video/decoder_test.go b/pkg/formats/rtpmpeg4video/decoder_test.go index 14c7e67d..e0682336 100644 --- a/pkg/formats/rtpmpeg4video/decoder_test.go +++ b/pkg/formats/rtpmpeg4video/decoder_test.go @@ -11,10 +11,10 @@ func TestDecode(t *testing.T) { for _, ca := range cases { t.Run(ca.name, func(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) var frame []byte - var err error for _, pkt := range ca.pkts { frame, _, err = d.Decode(pkt) @@ -33,9 +33,9 @@ func TestDecode(t *testing.T) { func FuzzDecoder(f *testing.F) { f.Fuzz(func(t *testing.T, a []byte, am bool, b []byte, bm bool) { d := &Decoder{} - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: am, @@ -47,7 +47,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: bm, diff --git a/pkg/formats/rtpmpeg4video/encoder.go b/pkg/formats/rtpmpeg4video/encoder.go index eab4c263..99998c2e 100644 --- a/pkg/formats/rtpmpeg4video/encoder.go +++ b/pkg/formats/rtpmpeg4video/encoder.go @@ -10,7 +10,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -73,7 +74,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtpmpeg4video/encoder_test.go b/pkg/formats/rtpmpeg4video/encoder_test.go index f66519cb..77367520 100644 --- a/pkg/formats/rtpmpeg4video/encoder_test.go +++ b/pkg/formats/rtpmpeg4video/encoder_test.go @@ -80,7 +80,8 @@ func TestEncode(t *testing.T) { InitialTimestamp: uint32Ptr(0x88776655), PayloadMaxSize: 100, } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.frame, 0) require.NoError(t, err) @@ -93,7 +94,8 @@ func TestEncodeRandomInitialState(t *testing.T) { e := &Encoder{ PayloadType: 96, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtpsimpleaudio/decoder_test.go b/pkg/formats/rtpsimpleaudio/decoder_test.go index 0cb55d0a..bd6c52fd 100644 --- a/pkg/formats/rtpsimpleaudio/decoder_test.go +++ b/pkg/formats/rtpsimpleaudio/decoder_test.go @@ -12,7 +12,8 @@ func TestDecode(t *testing.T) { d := &Decoder{ SampleRate: 8000, } - d.Init() + err := d.Init() + require.NoError(t, err) frame, _, err := d.Decode(ca.pkt) require.NoError(t, err) diff --git a/pkg/formats/rtpsimpleaudio/encoder.go b/pkg/formats/rtpsimpleaudio/encoder.go index 1f6e8ee4..10521376 100644 --- a/pkg/formats/rtpsimpleaudio/encoder.go +++ b/pkg/formats/rtpsimpleaudio/encoder.go @@ -11,7 +11,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -75,7 +76,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtpsimpleaudio/encoder_test.go b/pkg/formats/rtpsimpleaudio/encoder_test.go index 09756394..a5dd8594 100644 --- a/pkg/formats/rtpsimpleaudio/encoder_test.go +++ b/pkg/formats/rtpsimpleaudio/encoder_test.go @@ -47,7 +47,8 @@ func TestEncode(t *testing.T) { InitialSequenceNumber: uint16Ptr(0x44ed), InitialTimestamp: uint32Ptr(0x88776655), } - e.Init() + err := e.Init() + require.NoError(t, err) pkt, err := e.Encode(ca.frame, 0) require.NoError(t, err) @@ -61,7 +62,8 @@ func TestEncodeRandomInitialState(t *testing.T) { PayloadType: 0, SampleRate: 8000, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtpvp8/decoder_test.go b/pkg/formats/rtpvp8/decoder_test.go index 5b7f026a..2e5555c5 100644 --- a/pkg/formats/rtpvp8/decoder_test.go +++ b/pkg/formats/rtpvp8/decoder_test.go @@ -11,10 +11,10 @@ func TestDecode(t *testing.T) { for _, ca := range cases { t.Run(ca.name, func(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) var frame []byte - var err error for _, pkt := range ca.pkts { frame, _, err = d.Decode(pkt) @@ -29,9 +29,9 @@ func TestDecode(t *testing.T) { func FuzzDecoder(f *testing.F) { f.Fuzz(func(t *testing.T, a []byte, am bool, b []byte, bm bool) { d := &Decoder{} - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: am, @@ -43,7 +43,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: bm, diff --git a/pkg/formats/rtpvp8/encoder.go b/pkg/formats/rtpvp8/encoder.go index efbadc8a..76ee28df 100644 --- a/pkg/formats/rtpvp8/encoder.go +++ b/pkg/formats/rtpvp8/encoder.go @@ -12,7 +12,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -76,7 +77,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } e.sequenceNumber = *e.InitialSequenceNumber diff --git a/pkg/formats/rtpvp8/encoder_test.go b/pkg/formats/rtpvp8/encoder_test.go index d5674e35..3fc484dd 100644 --- a/pkg/formats/rtpvp8/encoder_test.go +++ b/pkg/formats/rtpvp8/encoder_test.go @@ -104,7 +104,8 @@ func TestEncode(t *testing.T) { InitialSequenceNumber: uint16Ptr(0x44ed), InitialTimestamp: uint32Ptr(0x88776655), } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.frame, 0) require.NoError(t, err) @@ -117,7 +118,8 @@ func TestEncodeRandomInitialState(t *testing.T) { e := &Encoder{ PayloadType: 96, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/formats/rtpvp9/decoder_test.go b/pkg/formats/rtpvp9/decoder_test.go index a8775291..7a89f10b 100644 --- a/pkg/formats/rtpvp9/decoder_test.go +++ b/pkg/formats/rtpvp9/decoder_test.go @@ -11,10 +11,10 @@ func TestDecode(t *testing.T) { for _, ca := range cases { t.Run(ca.name, func(t *testing.T) { d := &Decoder{} - d.Init() + err := d.Init() + require.NoError(t, err) var frame []byte - var err error for _, pkt := range ca.pkts { frame, _, err = d.Decode(pkt) @@ -29,9 +29,9 @@ func TestDecode(t *testing.T) { func FuzzDecoder(f *testing.F) { f.Fuzz(func(t *testing.T, a []byte, am bool, b []byte, bm bool) { d := &Decoder{} - d.Init() + d.Init() //nolint:errcheck - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: am, @@ -43,7 +43,7 @@ func FuzzDecoder(f *testing.F) { Payload: a, }) - d.Decode(&rtp.Packet{ + d.Decode(&rtp.Packet{ //nolint:errcheck Header: rtp.Header{ Version: 2, Marker: bm, diff --git a/pkg/formats/rtpvp9/encoder.go b/pkg/formats/rtpvp9/encoder.go index 761dbf50..28d712ae 100644 --- a/pkg/formats/rtpvp9/encoder.go +++ b/pkg/formats/rtpvp9/encoder.go @@ -12,7 +12,8 @@ import ( ) const ( - rtpVersion = 2 + rtpVersion = 2 + defaultPayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) ) func randUint32() (uint32, error) { @@ -80,7 +81,7 @@ func (e *Encoder) Init() error { e.InitialTimestamp = &v } if e.PayloadMaxSize == 0 { - e.PayloadMaxSize = 1460 // 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header) - 12 (RTP header) + e.PayloadMaxSize = defaultPayloadMaxSize } if e.InitialPictureID == nil { v, err := randUint32() diff --git a/pkg/formats/rtpvp9/encoder_test.go b/pkg/formats/rtpvp9/encoder_test.go index 749ddab2..da7ed68f 100644 --- a/pkg/formats/rtpvp9/encoder_test.go +++ b/pkg/formats/rtpvp9/encoder_test.go @@ -106,7 +106,8 @@ func TestEncode(t *testing.T) { InitialTimestamp: uint32Ptr(0x88776655), InitialPictureID: uint16Ptr(0x35af), } - e.Init() + err := e.Init() + require.NoError(t, err) pkts, err := e.Encode(ca.frame, 0) require.NoError(t, err) @@ -119,7 +120,8 @@ func TestEncodeRandomInitialState(t *testing.T) { e := &Encoder{ PayloadType: 96, } - e.Init() + err := e.Init() + require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) require.NotEqual(t, nil, e.InitialTimestamp) diff --git a/pkg/sdp/sdp_test.go b/pkg/sdp/sdp_test.go index 9accfba8..63d37517 100644 --- a/pkg/sdp/sdp_test.go +++ b/pkg/sdp/sdp_test.go @@ -2480,6 +2480,6 @@ func FuzzUnmarshal(f *testing.F) { f.Fuzz(func(t *testing.T, b string) { desc := SessionDescription{} - desc.Unmarshal([]byte(b)) + desc.Unmarshal([]byte(b)) //nolint:errcheck }) } diff --git a/server.go b/server.go index e370ffec..9c993a65 100644 --- a/server.go +++ b/server.go @@ -321,6 +321,8 @@ func (s *Server) Start() error { func (s *Server) Close() error { s.ctxCancel() s.wg.Wait() + + // TODO: remove return value in next major version return s.closeError } diff --git a/server_conn.go b/server_conn.go index 068e9f20..8f3c630c 100644 --- a/server_conn.go +++ b/server_conn.go @@ -112,6 +112,7 @@ func newServerConn( // Close closes the ServerConn. func (sc *ServerConn) Close() error { sc.ctxCancel() + // TODO: remove return value in next major version return nil } @@ -397,7 +398,10 @@ func (sc *ServerConn) handleRequestOuter(req *base.Request) error { } sc.nconn.SetWriteDeadline(time.Now().Add(sc.s.WriteTimeout)) - sc.conn.WriteResponse(res) + err2 := sc.conn.WriteResponse(res) + if err == nil && err2 != nil { + err = err2 + } return err } diff --git a/server_multicast_writer.go b/server_multicast_writer.go index acc1860a..b32d5a3c 100644 --- a/server_multicast_writer.go +++ b/server_multicast_writer.go @@ -82,9 +82,9 @@ func (h *serverMulticastWriter) runWriter() { data := tmp.(typeAndPayload) if data.isRTP { - h.rtpl.write(data.payload, rtpAddr) + h.rtpl.write(data.payload, rtpAddr) //nolint:errcheck } else { - h.rtcpl.write(data.payload, rtcpAddr) + h.rtcpl.write(data.payload, rtcpAddr) //nolint:errcheck } } } diff --git a/server_play_test.go b/server_play_test.go index 4489e2f7..dbdee90b 100644 --- a/server_play_test.go +++ b/server_play_test.go @@ -764,17 +764,19 @@ func TestServerPlay(t *testing.T) { // client -> server (RTCP) switch transport { case "udp": - l2.WriteTo(testRTCPPacketMarshaled, &net.UDPAddr{ + _, err := l2.WriteTo(testRTCPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: th.ServerPorts[1], }) + require.NoError(t, err) <-framesReceived case "multicast": - l2.WriteTo(testRTCPPacketMarshaled, &net.UDPAddr{ + _, err := l2.WriteTo(testRTCPPacketMarshaled, &net.UDPAddr{ IP: *th.Destination, Port: th.Ports[1], }) + require.NoError(t, err) <-framesReceived default: @@ -928,26 +930,28 @@ func TestServerPlayDecodeErrors(t *testing.T) { switch { //nolint:dupl case ca.proto == "udp" && ca.name == "rtcp invalid": - l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ + _, err := l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: resTH.ServerPorts[1], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtcp too big": - l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ + _, err := l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: resTH.ServerPorts[1], }) + require.NoError(t, err) case ca.proto == "tcp" && ca.name == "rtcp invalid": - err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ + err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 1, Payload: []byte{0x01, 0x02}, }, make([]byte, 2048)) require.NoError(t, err) case ca.proto == "tcp" && ca.name == "rtcp too big": - err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ + err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 1, Payload: bytes.Repeat([]byte{0x01, 0x02}, 2000/2), }, make([]byte, 2048)) diff --git a/server_record_test.go b/server_record_test.go index 99b67ba5..6c1c0f77 100644 --- a/server_record_test.go +++ b/server_record_test.go @@ -672,15 +672,17 @@ func TestServerRecord(t *testing.T) { // client -> server if transport == "udp" { - l1s[i].WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ + _, err = l1s[i].WriteTo(testRTPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: serverPorts[i][0], }) + require.NoError(t, err) - l2s[i].WriteTo(testRTCPPacketMarshaled, &net.UDPAddr{ + _, err = l2s[i].WriteTo(testRTCPPacketMarshaled, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: serverPorts[i][1], }) + require.NoError(t, err) } else { err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 2 + i*2, @@ -1313,16 +1315,18 @@ func TestServerRecordDecodeErrors(t *testing.T) { switch { //nolint:dupl case ca.proto == "udp" && ca.name == "rtp invalid": - l1.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ + _, err := l1.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: resTH.ServerPorts[0], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtcp invalid": - l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ + _, err := l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: resTH.ServerPorts[1], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtp packets lost": byts, _ := rtp.Packet{ @@ -1331,10 +1335,12 @@ func TestServerRecordDecodeErrors(t *testing.T) { SequenceNumber: 30, }, }.Marshal() - l1.WriteTo(byts, &net.UDPAddr{ + + _, err := l1.WriteTo(byts, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: resTH.ServerPorts[0], }) + require.NoError(t, err) byts, _ = rtp.Packet{ Header: rtp.Header{ @@ -1342,22 +1348,26 @@ func TestServerRecordDecodeErrors(t *testing.T) { SequenceNumber: 100, }, }.Marshal() - l1.WriteTo(byts, &net.UDPAddr{ + + _, err = l1.WriteTo(byts, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: resTH.ServerPorts[0], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtp too big": - l1.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ + _, err := l1.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: resTH.ServerPorts[0], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtcp too big": - l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ + _, err := l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: resTH.ServerPorts[1], }) + require.NoError(t, err) case ca.proto == "udp" && ca.name == "rtp unknown format": byts, _ := rtp.Packet{ @@ -1365,20 +1375,22 @@ func TestServerRecordDecodeErrors(t *testing.T) { PayloadType: 111, }, }.Marshal() - l1.WriteTo(byts, &net.UDPAddr{ + + _, err := l1.WriteTo(byts, &net.UDPAddr{ IP: net.ParseIP("127.0.0.1"), Port: resTH.ServerPorts[0], }) + require.NoError(t, err) case ca.proto == "tcp" && ca.name == "rtcp invalid": - err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ + err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 1, Payload: []byte{0x01, 0x02}, }, make([]byte, 2048)) require.NoError(t, err) case ca.proto == "tcp" && ca.name == "rtcp too big": - err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ + err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 1, Payload: bytes.Repeat([]byte{0x01, 0x02}, 2000/2), }, make([]byte, 2048)) @@ -1390,7 +1402,8 @@ func TestServerRecordDecodeErrors(t *testing.T) { PayloadType: 111, }, }.Marshal() - err = conn.WriteInterleavedFrame(&base.InterleavedFrame{ + + err := conn.WriteInterleavedFrame(&base.InterleavedFrame{ Channel: 0, Payload: byts, }, make([]byte, 2048)) diff --git a/server_session.go b/server_session.go index 5f4f8138..bd304566 100644 --- a/server_session.go +++ b/server_session.go @@ -197,6 +197,7 @@ func newServerSession( // Close closes the ServerSession. func (ss *ServerSession) Close() error { ss.ctxCancel() + // TODO: remove return value in next major version return nil } diff --git a/server_session_media.go b/server_session_media.go index 801198db..5e43f5f5 100644 --- a/server_session_media.go +++ b/server_session_media.go @@ -110,26 +110,26 @@ func (sm *serverSessionMedia) stop() { func (sm *serverSessionMedia) writePacketRTPInQueueUDP(payload []byte) { atomic.AddUint64(sm.ss.bytesSent, uint64(len(payload))) - sm.ss.s.udpRTPListener.write(payload, sm.udpRTPWriteAddr) + sm.ss.s.udpRTPListener.write(payload, sm.udpRTPWriteAddr) //nolint:errcheck } func (sm *serverSessionMedia) writePacketRTCPInQueueUDP(payload []byte) { atomic.AddUint64(sm.ss.bytesSent, uint64(len(payload))) - sm.ss.s.udpRTCPListener.write(payload, sm.udpRTCPWriteAddr) + sm.ss.s.udpRTCPListener.write(payload, sm.udpRTCPWriteAddr) //nolint:errcheck } func (sm *serverSessionMedia) writePacketRTPInQueueTCP(payload []byte) { atomic.AddUint64(sm.ss.bytesSent, uint64(len(payload))) sm.tcpRTPFrame.Payload = payload sm.ss.tcpConn.nconn.SetWriteDeadline(time.Now().Add(sm.ss.s.WriteTimeout)) - sm.ss.tcpConn.conn.WriteInterleavedFrame(sm.tcpRTPFrame, sm.tcpBuffer) + sm.ss.tcpConn.conn.WriteInterleavedFrame(sm.tcpRTPFrame, sm.tcpBuffer) //nolint:errcheck } func (sm *serverSessionMedia) writePacketRTCPInQueueTCP(payload []byte) { atomic.AddUint64(sm.ss.bytesSent, uint64(len(payload))) sm.tcpRTCPFrame.Payload = payload sm.ss.tcpConn.nconn.SetWriteDeadline(time.Now().Add(sm.ss.s.WriteTimeout)) - sm.ss.tcpConn.conn.WriteInterleavedFrame(sm.tcpRTCPFrame, sm.tcpBuffer) + sm.ss.tcpConn.conn.WriteInterleavedFrame(sm.tcpRTCPFrame, sm.tcpBuffer) //nolint:errcheck } func (sm *serverSessionMedia) writePacketRTP(payload []byte) { diff --git a/server_stream.go b/server_stream.go index 11e6262b..83edcb8a 100644 --- a/server_stream.go +++ b/server_stream.go @@ -69,6 +69,7 @@ func (st *ServerStream) Close() error { sm.close() } + // TODO: remove return value in next major version return nil } diff --git a/server_udp_listener.go b/server_udp_listener.go index fd98fdf1..2cdf3cbe 100644 --- a/server_udp_listener.go +++ b/server_udp_listener.go @@ -64,7 +64,7 @@ func (p *clientAddr) fill(ip net.IP, port int) { } type serverUDPListener struct { - pc *net.UDPConn + pc net.PacketConn listenIP net.IP writeTimeout time.Duration clientsMutex sync.RWMutex @@ -184,10 +184,11 @@ func (u *serverUDPListener) run() { for { buf := make([]byte, udpMaxPayloadSize+1) - n, addr, err := u.pc.ReadFromUDP(buf) + n, addr2, err := u.pc.ReadFrom(buf) if err != nil { break } + addr := addr2.(*net.UDPAddr) func() { u.clientsMutex.RLock()