diff --git a/.github/workflows/code_lint.yml b/.github/workflows/code_lint.yml index b25c3b8f..8ee7e3c3 100644 --- a/.github/workflows/code_lint.yml +++ b/.github/workflows/code_lint.yml @@ -21,9 +21,9 @@ jobs: - run: go generate ./... - - uses: golangci/golangci-lint-action@v4 + - uses: golangci/golangci-lint-action@v8 with: - version: v1.61.0 + version: v2.1.6 mod_tidy: runs-on: ubuntu-22.04 diff --git a/.golangci.yml b/.golangci.yml index 4bfbdcf6..e10b982a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,73 +1,75 @@ +version: "2" + linters: enable: - asciicheck - bidichk - bodyclose - #- contextcheck - copyloopvar - dupl - errorlint - gochecknoinits - gocritic - - gofmt - - gofumpt - lll - misspell - nilerr - prealloc - predeclared + - reassign - revive - usestdlibvars - unconvert - #- usetesting - tparallel - wastedassign - whitespace -issues: - exclude-use-default: false + 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/v4.Client).Close + - (*github.com/bluenviron/gortsplib/v4.Server).Close + - (*github.com/bluenviron/gortsplib/v4.ServerSession).Close + - (*github.com/bluenviron/gortsplib/v4.ServerStream).Close + - (*github.com/bluenviron/gortsplib/v4.ServerConn).Close -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/v4.Client).Close - - (*github.com/bluenviron/gortsplib/v4.Server).Close - - (*github.com/bluenviron/gortsplib/v4.ServerSession).Close - - (*github.com/bluenviron/gortsplib/v4.ServerStream).Close - - (*github.com/bluenviron/gortsplib/v4.ServerConn).Close + govet: + enable-all: true + disable: + - fieldalignment + - reflectvaluecompare - govet: - enable-all: true - disable: - - fieldalignment - - reflectvaluecompare +formatters: + enable: + - gofmt + - gofumpt + - goimports diff --git a/Makefile b/Makefile index 21938b08..fc5569b6 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ BASE_IMAGE = golang:1.23-alpine3.20 -LINT_IMAGE = golangci/golangci-lint:v1.64.5 +LINT_IMAGE = golangci/golangci-lint:v2.1.6 NODE_IMAGE = node:20-alpine3.20 .PHONY: $(shell ls) diff --git a/internal/formatprocessor/ac3.go b/internal/formatprocessor/ac3.go index f9c2dbbf..9939217a 100644 --- a/internal/formatprocessor/ac3.go +++ b/internal/formatprocessor/ac3.go @@ -78,7 +78,7 @@ func (t *ac3) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/av1.go b/internal/formatprocessor/av1.go index a6bb3876..22860d4d 100644 --- a/internal/formatprocessor/av1.go +++ b/internal/formatprocessor/av1.go @@ -86,7 +86,7 @@ func (t *av1) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/g711.go b/internal/formatprocessor/g711.go index 3e9b0872..fc5b21d8 100644 --- a/internal/formatprocessor/g711.go +++ b/internal/formatprocessor/g711.go @@ -80,7 +80,7 @@ func (t *g711) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/generic.go b/internal/formatprocessor/generic.go index 34bdaa8b..5878efb1 100644 --- a/internal/formatprocessor/generic.go +++ b/internal/formatprocessor/generic.go @@ -45,7 +45,7 @@ func (t *generic) ProcessRTPPacket( } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/h264.go b/internal/formatprocessor/h264.go index c4a6b251..37296b95 100644 --- a/internal/formatprocessor/h264.go +++ b/internal/formatprocessor/h264.go @@ -263,7 +263,7 @@ func (t *h264) ProcessRTPPacket( //nolint:dupl if t.encoder == nil { // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 // RTP packets exceed maximum size: start re-encoding them diff --git a/internal/formatprocessor/h265.go b/internal/formatprocessor/h265.go index d3bccb83..7e9dd1e8 100644 --- a/internal/formatprocessor/h265.go +++ b/internal/formatprocessor/h265.go @@ -295,7 +295,7 @@ func (t *h265) ProcessRTPPacket( //nolint:dupl if t.encoder == nil { // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 // RTP packets exceed maximum size: start re-encoding them diff --git a/internal/formatprocessor/lpcm.go b/internal/formatprocessor/lpcm.go index 64dcf6be..8cf3770f 100644 --- a/internal/formatprocessor/lpcm.go +++ b/internal/formatprocessor/lpcm.go @@ -80,7 +80,7 @@ func (t *lpcm) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/mjpeg.go b/internal/formatprocessor/mjpeg.go index 2774e2b2..4b5c65a2 100644 --- a/internal/formatprocessor/mjpeg.go +++ b/internal/formatprocessor/mjpeg.go @@ -79,7 +79,7 @@ func (t *mjpeg) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/mpeg1_audio.go b/internal/formatprocessor/mpeg1_audio.go index 70e06b52..86a4754f 100644 --- a/internal/formatprocessor/mpeg1_audio.go +++ b/internal/formatprocessor/mpeg1_audio.go @@ -78,7 +78,7 @@ func (t *mpeg1Audio) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/mpeg1_video.go b/internal/formatprocessor/mpeg1_video.go index e5e39976..d5c194d3 100644 --- a/internal/formatprocessor/mpeg1_video.go +++ b/internal/formatprocessor/mpeg1_video.go @@ -88,7 +88,7 @@ func (t *mpeg1Video) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/mpeg4_audio.go b/internal/formatprocessor/mpeg4_audio.go index 5bf74039..d0149743 100644 --- a/internal/formatprocessor/mpeg4_audio.go +++ b/internal/formatprocessor/mpeg4_audio.go @@ -82,7 +82,7 @@ func (t *mpeg4Audio) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/mpeg4_video.go b/internal/formatprocessor/mpeg4_video.go index 9b840642..b07eb44e 100644 --- a/internal/formatprocessor/mpeg4_video.go +++ b/internal/formatprocessor/mpeg4_video.go @@ -133,7 +133,7 @@ func (t *mpeg4Video) ProcessRTPPacket( //nolint:dupl t.updateTrackParameters(pkt.Payload) // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/opus.go b/internal/formatprocessor/opus.go index 89df8c63..e483accf 100644 --- a/internal/formatprocessor/opus.go +++ b/internal/formatprocessor/opus.go @@ -86,7 +86,7 @@ func (t *opus) ProcessRTPPacket( } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/vp8.go b/internal/formatprocessor/vp8.go index 73751c17..28aaaa4b 100644 --- a/internal/formatprocessor/vp8.go +++ b/internal/formatprocessor/vp8.go @@ -79,7 +79,7 @@ func (t *vp8) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/formatprocessor/vp9.go b/internal/formatprocessor/vp9.go index 8905a8b1..f05f82e4 100644 --- a/internal/formatprocessor/vp9.go +++ b/internal/formatprocessor/vp9.go @@ -79,7 +79,7 @@ func (t *vp9) ProcessRTPPacket( //nolint:dupl } // remove padding - pkt.Header.Padding = false + pkt.Padding = false pkt.PaddingSize = 0 if pkt.MarshalSize() > t.UDPMaxPayloadSize { diff --git a/internal/logger/destination_syslog.go b/internal/logger/destination_syslog.go index 3c7ce3f4..eacb2fb7 100644 --- a/internal/logger/destination_syslog.go +++ b/internal/logger/destination_syslog.go @@ -27,7 +27,7 @@ func (d *destinationSysLog) log(t time.Time, level Level, format string, args .. writeTime(&d.buf, t, false) writeLevel(&d.buf, level, false) writeContent(&d.buf, format, args) - d.syslog.Write(d.buf.Bytes()) + d.syslog.Write(d.buf.Bytes()) //nolint:errcheck } func (d *destinationSysLog) close() { diff --git a/internal/logger/logger.go b/internal/logger/logger.go index fbf45aa0..f2d6cde9 100644 --- a/internal/logger/logger.go +++ b/internal/logger/logger.go @@ -136,7 +136,7 @@ func writeLevel(buf *bytes.Buffer, level Level, useColor bool) { } func writeContent(buf *bytes.Buffer, format string, args []interface{}) { - buf.Write([]byte(fmt.Sprintf(format, args...))) + fmt.Fprintf(buf, format, args...) buf.WriteByte('\n') } diff --git a/internal/protocols/rtmp/from_stream.go b/internal/protocols/rtmp/from_stream.go index bcd5cdbf..bc040ce3 100644 --- a/internal/protocols/rtmp/from_stream.go +++ b/internal/protocols/rtmp/from_stream.go @@ -157,7 +157,7 @@ func setupAudio( return err } - if !(!h.MPEG2 && h.Layer == 3) { + if h.MPEG2 || h.Layer != 3 { return fmt.Errorf("RTMP only supports MPEG-1 layer 3 audio") } diff --git a/internal/protocols/rtmp/reader.go b/internal/protocols/rtmp/reader.go index 5aa85be2..7f0bb1c8 100644 --- a/internal/protocols/rtmp/reader.go +++ b/internal/protocols/rtmp/reader.go @@ -91,11 +91,11 @@ func mpeg4AudioTrackFromConfig(data []byte) (*format.MPEG4Audio, error) { } func audioTrackFromData(msg *message.Audio) (format.Format, error) { - switch { - case msg.Codec == message.CodecMPEG1Audio: + switch msg.Codec { + case message.CodecMPEG1Audio: return &format.MPEG1Audio{}, nil - case msg.Codec == message.CodecPCMA: + case message.CodecPCMA: return &format.G711{ PayloadTyp: 8, MULaw: false, @@ -108,7 +108,7 @@ func audioTrackFromData(msg *message.Audio) (format.Format, error) { }(), }, nil - case msg.Codec == message.CodecPCMU: + case message.CodecPCMU: return &format.G711{ PayloadTyp: 0, MULaw: true, @@ -121,7 +121,7 @@ func audioTrackFromData(msg *message.Audio) (format.Format, error) { }(), }, nil - case msg.Codec == message.CodecLPCM: + case message.CodecLPCM: return &format.LPCM{ PayloadTyp: 96, BitDepth: func() int {