mirror of
https://github.com/aler9/gortsplib
synced 2025-10-06 23:52:46 +08:00
update golangci-lint (#494)
This commit is contained in:
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
|||||||
|
|
||||||
- uses: golangci/golangci-lint-action@v3
|
- uses: golangci/golangci-lint-action@v3
|
||||||
with:
|
with:
|
||||||
version: v1.55.0
|
version: v1.55.2
|
||||||
|
|
||||||
go-mod-tidy:
|
go-mod-tidy:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
|
@@ -1,7 +1,10 @@
|
|||||||
linters:
|
linters:
|
||||||
enable:
|
enable:
|
||||||
|
- asciicheck
|
||||||
|
- bidichk
|
||||||
- bodyclose
|
- bodyclose
|
||||||
- dupl
|
- dupl
|
||||||
|
- errorlint
|
||||||
- exportloopref
|
- exportloopref
|
||||||
- gochecknoinits
|
- gochecknoinits
|
||||||
- gocritic
|
- gocritic
|
||||||
@@ -13,6 +16,7 @@ linters:
|
|||||||
- prealloc
|
- prealloc
|
||||||
- revive
|
- revive
|
||||||
- unconvert
|
- unconvert
|
||||||
|
- tparallel
|
||||||
- wastedassign
|
- wastedassign
|
||||||
- whitespace
|
- whitespace
|
||||||
|
|
||||||
|
2
Makefile
2
Makefile
@@ -1,5 +1,5 @@
|
|||||||
BASE_IMAGE = golang:1.21-alpine3.18
|
BASE_IMAGE = golang:1.21-alpine3.18
|
||||||
LINT_IMAGE = golangci/golangci-lint:v1.55.0
|
LINT_IMAGE = golangci/golangci-lint:v1.55.2
|
||||||
|
|
||||||
.PHONY: $(shell ls)
|
.PHONY: $(shell ls)
|
||||||
|
|
||||||
|
@@ -80,7 +80,7 @@ func (d *Session) Unmarshal(ssd *sdp.SessionDescription) error {
|
|||||||
var m Media
|
var m Media
|
||||||
err := m.Unmarshal(md)
|
err := m.Unmarshal(md)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("media %d is invalid: %v", i+1, err)
|
return fmt.Errorf("media %d is invalid: %w", i+1, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.ID != "" && hasMediaWithID(d.Medias[:i], m.ID) {
|
if m.ID != "" && hasMediaWithID(d.Medias[:i], m.ID) {
|
||||||
|
@@ -53,7 +53,7 @@ func (f *H265) unmarshal(ctx *unmarshalContext) error {
|
|||||||
var spsp h265.SPS
|
var spsp h265.SPS
|
||||||
err = spsp.Unmarshal(f.SPS)
|
err = spsp.Unmarshal(f.SPS)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid SPS: %v", err)
|
return fmt.Errorf("invalid SPS: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "sprop-pps":
|
case "sprop-pps":
|
||||||
@@ -69,7 +69,7 @@ func (f *H265) unmarshal(ctx *unmarshalContext) error {
|
|||||||
var ppsp h265.PPS
|
var ppsp h265.PPS
|
||||||
err = ppsp.Unmarshal(f.PPS)
|
err = ppsp.Unmarshal(f.PPS)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid PPS: %v", err)
|
return fmt.Errorf("invalid PPS: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "sprop-max-don-diff":
|
case "sprop-max-don-diff":
|
||||||
|
@@ -141,7 +141,7 @@ func (f *MPEG4Audio) unmarshal(ctx *unmarshalContext) error {
|
|||||||
f.StreamMuxConfig = &mpeg4audio.StreamMuxConfig{}
|
f.StreamMuxConfig = &mpeg4audio.StreamMuxConfig{}
|
||||||
err = f.StreamMuxConfig.Unmarshal(enc)
|
err = f.StreamMuxConfig.Unmarshal(enc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid AAC config: %v", err)
|
return fmt.Errorf("invalid AAC config: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "sbr-enabled":
|
case "sbr-enabled":
|
||||||
|
@@ -46,7 +46,7 @@ func (f *MPEG4Video) unmarshal(ctx *unmarshalContext) error {
|
|||||||
|
|
||||||
err = mpeg4video.IsValidConfig(f.Config)
|
err = mpeg4video.IsValidConfig(f.Config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid config: %v", err)
|
return fmt.Errorf("invalid config: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package rtpac3
|
package rtpac3
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
@@ -24,7 +25,7 @@ func TestDecode(t *testing.T) {
|
|||||||
// test input integrity
|
// test input integrity
|
||||||
require.Equal(t, clone, pkt)
|
require.Equal(t, clone, pkt)
|
||||||
|
|
||||||
if err == ErrMorePacketsNeeded {
|
if errors.Is(err, ErrMorePacketsNeeded) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -52,7 +52,7 @@ func (d *Decoder) decodeOBUs(pkt *rtp.Packet) ([][]byte, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
d.fragments = d.fragments[:0] // discard pending fragments
|
d.fragments = d.fragments[:0] // discard pending fragments
|
||||||
d.fragmentsSize = 0
|
d.fragmentsSize = 0
|
||||||
return nil, fmt.Errorf("invalid header: %v", err)
|
return nil, fmt.Errorf("invalid header: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, el := range av1header.OBUElements {
|
for _, el := range av1header.OBUElements {
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package rtpav1
|
package rtpav1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/bluenviron/mediacommon/pkg/codecs/av1"
|
"github.com/bluenviron/mediacommon/pkg/codecs/av1"
|
||||||
@@ -19,7 +20,7 @@ func TestDecode(t *testing.T) {
|
|||||||
|
|
||||||
for _, pkt := range ca.pkts {
|
for _, pkt := range ca.pkts {
|
||||||
addOBUs, err := d.Decode(pkt)
|
addOBUs, err := d.Decode(pkt)
|
||||||
if err == ErrMorePacketsNeeded {
|
if errors.Is(err, ErrMorePacketsNeeded) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2,6 +2,7 @@ package rtph264
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/bluenviron/mediacommon/pkg/codecs/h264"
|
"github.com/bluenviron/mediacommon/pkg/codecs/h264"
|
||||||
@@ -26,7 +27,7 @@ func TestDecode(t *testing.T) {
|
|||||||
// test input integrity
|
// test input integrity
|
||||||
require.Equal(t, clone, pkt)
|
require.Equal(t, clone, pkt)
|
||||||
|
|
||||||
if err == ErrMorePacketsNeeded {
|
if errors.Is(err, ErrMorePacketsNeeded) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package rtph265
|
package rtph265
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/bluenviron/mediacommon/pkg/codecs/h265"
|
"github.com/bluenviron/mediacommon/pkg/codecs/h265"
|
||||||
@@ -25,7 +26,7 @@ func TestDecode(t *testing.T) {
|
|||||||
// test input integrity
|
// test input integrity
|
||||||
require.Equal(t, clone, pkt)
|
require.Equal(t, clone, pkt)
|
||||||
|
|
||||||
if err == ErrMorePacketsNeeded {
|
if errors.Is(err, ErrMorePacketsNeeded) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package rtpmjpeg
|
package rtpmjpeg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
@@ -16,7 +17,7 @@ func TestDecode(t *testing.T) {
|
|||||||
|
|
||||||
for _, pkt := range ca.pkts {
|
for _, pkt := range ca.pkts {
|
||||||
image, err := d.Decode(pkt)
|
image, err := d.Decode(pkt)
|
||||||
if err == ErrMorePacketsNeeded {
|
if errors.Is(err, ErrMorePacketsNeeded) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -176,7 +176,7 @@ func (d *Decoder) removeADTS(aus [][]byte) ([][]byte, error) {
|
|||||||
var pkts mpeg4audio.ADTSPackets
|
var pkts mpeg4audio.ADTSPackets
|
||||||
err := pkts.Unmarshal(aus[0])
|
err := pkts.Unmarshal(aus[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to decode ADTS: %s", err)
|
return nil, fmt.Errorf("unable to decode ADTS: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(pkts) != 1 {
|
if len(pkts) != 1 {
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package rtpmpeg4audio
|
package rtpmpeg4audio
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
@@ -28,7 +29,7 @@ func TestDecodeGeneric(t *testing.T) {
|
|||||||
// test input integrity
|
// test input integrity
|
||||||
require.Equal(t, clone, pkt)
|
require.Equal(t, clone, pkt)
|
||||||
|
|
||||||
if err == ErrMorePacketsNeeded {
|
if errors.Is(err, ErrMorePacketsNeeded) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package rtpmpeg4audio
|
package rtpmpeg4audio
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
@@ -26,7 +27,7 @@ func TestDecodeLATM(t *testing.T) {
|
|||||||
// test input integrity
|
// test input integrity
|
||||||
require.Equal(t, clone, pkt)
|
require.Equal(t, clone, pkt)
|
||||||
|
|
||||||
if err == ErrMorePacketsNeeded {
|
if errors.Is(err, ErrMorePacketsNeeded) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package rtpmpeg4video
|
package rtpmpeg4video
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
@@ -18,7 +19,7 @@ func TestDecode(t *testing.T) {
|
|||||||
|
|
||||||
for _, pkt := range ca.pkts {
|
for _, pkt := range ca.pkts {
|
||||||
frame, err = d.Decode(pkt)
|
frame, err = d.Decode(pkt)
|
||||||
if err == ErrMorePacketsNeeded {
|
if errors.Is(err, ErrMorePacketsNeeded) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,6 +3,7 @@ package gortsplib
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
gourl "net/url"
|
gourl "net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -384,7 +385,8 @@ func (sc *ServerConn) handleRequestOuter(req *base.Request) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add cseq
|
// add cseq
|
||||||
if _, ok := err.(liberrors.ErrServerCSeqMissing); !ok {
|
var eerr liberrors.ErrServerCSeqMissing
|
||||||
|
if !errors.As(err, &eerr) {
|
||||||
res.Header["CSeq"] = req.Header["CSeq"]
|
res.Header["CSeq"] = req.Header["CSeq"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package gortsplib
|
package gortsplib
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -8,17 +9,17 @@ import (
|
|||||||
"github.com/bluenviron/gortsplib/v4/pkg/liberrors"
|
"github.com/bluenviron/gortsplib/v4/pkg/liberrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
type errSwitchReadFunc struct {
|
type switchReadFuncError struct {
|
||||||
tcp bool
|
tcp bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (errSwitchReadFunc) Error() string {
|
func (switchReadFuncError) Error() string {
|
||||||
return "switching read function"
|
return "switching read function"
|
||||||
}
|
}
|
||||||
|
|
||||||
func isErrSwitchReadFunc(err error) bool {
|
func isSwitchReadFuncError(err error) bool {
|
||||||
_, ok := err.(errSwitchReadFunc)
|
var eerr switchReadFuncError
|
||||||
return ok
|
return errors.As(err, &eerr)
|
||||||
}
|
}
|
||||||
|
|
||||||
type serverConnReader struct {
|
type serverConnReader struct {
|
||||||
@@ -44,8 +45,9 @@ func (cr *serverConnReader) run() {
|
|||||||
|
|
||||||
for {
|
for {
|
||||||
err := readFunc()
|
err := readFunc()
|
||||||
if err, ok := err.(errSwitchReadFunc); ok {
|
var eerr switchReadFuncError
|
||||||
if err.tcp {
|
if errors.As(err, &eerr) {
|
||||||
|
if eerr.tcp {
|
||||||
readFunc = cr.readFuncTCP
|
readFunc = cr.readFuncTCP
|
||||||
} else {
|
} else {
|
||||||
readFunc = cr.readFuncStandard
|
readFunc = cr.readFuncStandard
|
||||||
|
@@ -403,7 +403,7 @@ func (ss *ServerSession) runInner() error {
|
|||||||
|
|
||||||
returnedSession := ss
|
returnedSession := ss
|
||||||
|
|
||||||
if err == nil || isErrSwitchReadFunc(err) {
|
if err == nil || isSwitchReadFuncError(err) {
|
||||||
// ANNOUNCE responses don't contain the session header.
|
// ANNOUNCE responses don't contain the session header.
|
||||||
if req.req.Method != base.Announce &&
|
if req.req.Method != base.Announce &&
|
||||||
req.req.Method != base.Teardown {
|
req.req.Method != base.Teardown {
|
||||||
@@ -444,7 +444,7 @@ func (ss *ServerSession) runInner() error {
|
|||||||
ss: returnedSession,
|
ss: returnedSession,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err == nil || isErrSwitchReadFunc(err)) && savedMethod == base.Teardown {
|
if (err == nil || isSwitchReadFuncError(err)) && savedMethod == base.Teardown {
|
||||||
return liberrors.ErrServerSessionTornDown{Author: req.sc.NetConn().RemoteAddr()}
|
return liberrors.ErrServerSessionTornDown{Author: req.sc.NetConn().RemoteAddr()}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -951,7 +951,7 @@ func (ss *ServerSession) handleRequestInner(sc *ServerConn, req *base.Request) (
|
|||||||
|
|
||||||
default: // TCP
|
default: // TCP
|
||||||
ss.tcpConn = sc
|
ss.tcpConn = sc
|
||||||
err = errSwitchReadFunc{true}
|
err = switchReadFuncError{true}
|
||||||
// writer.start() is called by ServerConn after the response has been sent
|
// writer.start() is called by ServerConn after the response has been sent
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1034,7 +1034,7 @@ func (ss *ServerSession) handleRequestInner(sc *ServerConn, req *base.Request) (
|
|||||||
|
|
||||||
default: // TCP
|
default: // TCP
|
||||||
ss.tcpConn = sc
|
ss.tcpConn = sc
|
||||||
err = errSwitchReadFunc{true}
|
err = switchReadFuncError{true}
|
||||||
// runWriter() is called by conn after sending the response
|
// runWriter() is called by conn after sending the response
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1089,7 +1089,7 @@ func (ss *ServerSession) handleRequestInner(sc *ServerConn, req *base.Request) (
|
|||||||
ss.udpCheckStreamTimer = emptyTimer()
|
ss.udpCheckStreamTimer = emptyTimer()
|
||||||
|
|
||||||
default: // TCP
|
default: // TCP
|
||||||
err = errSwitchReadFunc{false}
|
err = switchReadFuncError{false}
|
||||||
ss.tcpConn = nil
|
ss.tcpConn = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1099,7 +1099,7 @@ func (ss *ServerSession) handleRequestInner(sc *ServerConn, req *base.Request) (
|
|||||||
ss.udpCheckStreamTimer = emptyTimer()
|
ss.udpCheckStreamTimer = emptyTimer()
|
||||||
|
|
||||||
default: // TCP
|
default: // TCP
|
||||||
err = errSwitchReadFunc{false}
|
err = switchReadFuncError{false}
|
||||||
ss.tcpConn = nil
|
ss.tcpConn = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1112,7 +1112,7 @@ func (ss *ServerSession) handleRequestInner(sc *ServerConn, req *base.Request) (
|
|||||||
var err error
|
var err error
|
||||||
if (ss.state == ServerSessionStatePlay || ss.state == ServerSessionStateRecord) &&
|
if (ss.state == ServerSessionStatePlay || ss.state == ServerSessionStateRecord) &&
|
||||||
*ss.setuppedTransport == TransportTCP {
|
*ss.setuppedTransport == TransportTCP {
|
||||||
err = errSwitchReadFunc{false}
|
err = switchReadFuncError{false}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &base.Response{
|
return &base.Response{
|
||||||
|
Reference in New Issue
Block a user