From c8a422127804742b51acb2238d11426b9a92913d Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Tue, 16 Mar 2021 22:24:24 +0100 Subject: [PATCH] update gortsplib --- go.mod | 2 +- go.sum | 4 +-- internal/clientrtsp/client.go | 67 +++++++++-------------------------- 3 files changed, 19 insertions(+), 54 deletions(-) diff --git a/go.mod b/go.mod index c11fef4f..d25038a8 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.15 require ( github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect - github.com/aler9/gortsplib v0.0.0-20210316131127-50babb18c013 + github.com/aler9/gortsplib v0.0.0-20210316211856-c2de28c18558 github.com/davecgh/go-spew v1.1.1 // indirect github.com/fsnotify/fsnotify v1.4.9 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 diff --git a/go.sum b/go.sum index b510db65..edfc10ff 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/aler9/gortsplib v0.0.0-20210316131127-50babb18c013 h1:VseNrDPM+21Uhsfn1FhR3NHDQWH8uB4YNe5zHkH1xcc= -github.com/aler9/gortsplib v0.0.0-20210316131127-50babb18c013/go.mod h1:aj4kDzanb3JZ46sFywWShcsnqqXTLE/3PNjwDhQZGM0= +github.com/aler9/gortsplib v0.0.0-20210316211856-c2de28c18558 h1:e1MhWMfd4vlPPk9WZHSTC/Muigq41/+A6PSrgaRFUDY= +github.com/aler9/gortsplib v0.0.0-20210316211856-c2de28c18558/go.mod h1:aj4kDzanb3JZ46sFywWShcsnqqXTLE/3PNjwDhQZGM0= github.com/aler9/rtmp v0.0.0-20210309202041-2d7177b7300d h1:LAX8pNvYpGgFpKdbPpEZWjNkHbmyvjMrT3vO7s7aaKU= github.com/aler9/rtmp v0.0.0-20210309202041-2d7177b7300d/go.mod h1:vzuE21rowz+lT1NGsWbreIvYulgBpCGnQyeTyFblUHc= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= diff --git a/internal/clientrtsp/client.go b/internal/clientrtsp/client.go index 581726a4..493c9f28 100644 --- a/internal/clientrtsp/client.go +++ b/internal/clientrtsp/client.go @@ -6,7 +6,6 @@ import ( "io" "net" "strconv" - "strings" "sync" "sync/atomic" "time" @@ -159,16 +158,9 @@ func (c *Client) run() { c.log(logger.Debug, "[s->c] %v", res) } - onDescribe := func(req *base.Request) (*base.Response, []byte, error) { - reqPath, ok := req.URL.RTSPPath() - if !ok { - return &base.Response{ - StatusCode: base.StatusBadRequest, - }, nil, fmt.Errorf("invalid path (%s)", req.URL) - } - + onDescribe := func(ctx *gortsplib.ServerConnDescribeCtx) (*base.Response, []byte, error) { resc := make(chan client.DescribeRes) - c.parent.OnClientDescribe(client.DescribeReq{c, reqPath, req, resc}) //nolint:govet + c.parent.OnClientDescribe(client.DescribeReq{c, ctx.Path, ctx.Req, resc}) //nolint:govet res := <-resc if res.Err != nil { @@ -210,16 +202,9 @@ func (c *Client) run() { }, res.SDP, nil } - onAnnounce := func(req *base.Request, tracks gortsplib.Tracks) (*base.Response, error) { - reqPath, ok := req.URL.RTSPPath() - if !ok { - return &base.Response{ - StatusCode: base.StatusBadRequest, - }, fmt.Errorf("invalid path (%s)", req.URL) - } - + onAnnounce := func(ctx *gortsplib.ServerConnAnnounceCtx) (*base.Response, error) { resc := make(chan client.AnnounceRes) - c.parent.OnClientAnnounce(client.AnnounceReq{c, reqPath, tracks, req, resc}) //nolint:govet + c.parent.OnClientAnnounce(client.AnnounceReq{c, ctx.Path, ctx.Tracks, ctx.Req, resc}) //nolint:govet res := <-resc if res.Err != nil { @@ -249,8 +234,8 @@ func (c *Client) run() { }, nil } - onSetup := func(req *base.Request, th *headers.Transport, reqPath string, trackID int) (*base.Response, error) { - if th.Protocol == gortsplib.StreamProtocolUDP { + onSetup := func(ctx *gortsplib.ServerConnSetupCtx) (*base.Response, error) { + if ctx.Transport.Protocol == gortsplib.StreamProtocolUDP { if _, ok := c.protocols[gortsplib.StreamProtocolUDP]; !ok { return &base.Response{ StatusCode: base.StatusUnsupportedTransport, @@ -267,7 +252,7 @@ func (c *Client) run() { switch c.conn.State() { case gortsplib.ServerConnStateInitial, gortsplib.ServerConnStatePrePlay: // play resc := make(chan client.SetupPlayRes) - c.parent.OnClientSetupPlay(client.SetupPlayReq{c, reqPath, req, resc}) //nolint:govet + c.parent.OnClientSetupPlay(client.SetupPlayReq{c, ctx.Path, ctx.Req, resc}) //nolint:govet res := <-resc if res.Err != nil { @@ -297,10 +282,10 @@ func (c *Client) run() { c.path = res.Path - if trackID >= len(res.Tracks) { + if ctx.TrackID >= len(res.Tracks) { return &base.Response{ StatusCode: base.StatusBadRequest, - }, fmt.Errorf("track %d does not exist", trackID) + }, fmt.Errorf("track %d does not exist", ctx.TrackID) } } @@ -312,22 +297,12 @@ func (c *Client) run() { }, nil } - onPlay := func(req *base.Request) (*base.Response, error) { + onPlay := func(ctx *gortsplib.ServerConnPlayCtx) (*base.Response, error) { if c.conn.State() == gortsplib.ServerConnStatePrePlay { - reqPath, ok := req.URL.RTSPPath() - if !ok { - return &base.Response{ - StatusCode: base.StatusBadRequest, - }, fmt.Errorf("invalid path (%s)", req.URL) - } - - // path can end with a slash, remove it - reqPath = strings.TrimSuffix(reqPath, "/") - - if reqPath != c.path.Name() { + if ctx.Path != c.path.Name() { return &base.Response{ StatusCode: base.StatusBadRequest, - }, fmt.Errorf("path has changed, was '%s', now is '%s'", c.path.Name(), reqPath) + }, fmt.Errorf("path has changed, was '%s', now is '%s'", c.path.Name(), ctx.Path) } c.playStart() @@ -341,21 +316,11 @@ func (c *Client) run() { }, nil } - onRecord := func(req *base.Request) (*base.Response, error) { - reqPath, ok := req.URL.RTSPPath() - if !ok { - return &base.Response{ - StatusCode: base.StatusBadRequest, - }, fmt.Errorf("invalid path (%s)", req.URL) - } - - // path can end with a slash, remove it - reqPath = strings.TrimSuffix(reqPath, "/") - - if reqPath != c.path.Name() { + onRecord := func(ctx *gortsplib.ServerConnRecordCtx) (*base.Response, error) { + if ctx.Path != c.path.Name() { return &base.Response{ StatusCode: base.StatusBadRequest, - }, fmt.Errorf("path has changed, was '%s', now is '%s'", c.path.Name(), reqPath) + }, fmt.Errorf("path has changed, was '%s', now is '%s'", c.path.Name(), ctx.Path) } c.recordStart() @@ -368,7 +333,7 @@ func (c *Client) run() { }, nil } - onPause := func(req *base.Request) (*base.Response, error) { + onPause := func(ctx *gortsplib.ServerConnPauseCtx) (*base.Response, error) { switch c.conn.State() { case gortsplib.ServerConnStatePlay: c.playStop()