Browse Source

rtsp: print exact reason when a session is destroyed (#649)

pull/643/head
aler9 4 years ago
parent
commit
8875c8eaa6
  1. 2
      go.mod
  2. 4
      go.sum
  3. 18
      internal/core/rtsp_conn.go
  4. 5
      internal/core/rtsp_server.go
  5. 4
      internal/core/rtsp_session.go

2
go.mod

@ -5,7 +5,7 @@ go 1.16 @@ -5,7 +5,7 @@ go 1.16
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-20211022160112-22501a39ddf6
github.com/aler9/gortsplib v0.0.0-20211027173928-70137268fbf5
github.com/asticode/go-astits v1.10.0
github.com/fsnotify/fsnotify v1.4.9
github.com/gin-gonic/gin v1.7.2

4
go.sum

@ -2,8 +2,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo @@ -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-20211022160112-22501a39ddf6 h1:dccH0/W0hfxXt054maCTjf96V4e5O9KJCH8cuNlYFck=
github.com/aler9/gortsplib v0.0.0-20211022160112-22501a39ddf6/go.mod h1:fyQrQyHo8QvdR/h357tkv1g36VesZlzEPsdAu2VrHHc=
github.com/aler9/gortsplib v0.0.0-20211027173928-70137268fbf5 h1:H0eOyIwSz12hXyUrSpaEgQ71UjLh1n5GJYHvPgRntOk=
github.com/aler9/gortsplib v0.0.0-20211027173928-70137268fbf5/go.mod h1:fyQrQyHo8QvdR/h357tkv1g36VesZlzEPsdAu2VrHHc=
github.com/aler9/rtmp v0.0.0-20210403095203-3be4a5535927 h1:95mXJ5fUCYpBRdSOnLAQAdJHHKxxxJrVCiaqDi965YQ=
github.com/aler9/rtmp v0.0.0-20210403095203-3be4a5535927/go.mod h1:vzuE21rowz+lT1NGsWbreIvYulgBpCGnQyeTyFblUHc=
github.com/asticode/go-astikit v0.20.0 h1:+7N+J4E4lWx2QOkRdOf6DafWJMv6O4RRfgClwQokrH8=

18
internal/core/rtsp_conn.go

@ -2,7 +2,6 @@ package core @@ -2,7 +2,6 @@ package core
import (
"errors"
"io"
"net"
"time"
@ -10,7 +9,6 @@ import ( @@ -10,7 +9,6 @@ import (
"github.com/aler9/gortsplib/pkg/auth"
"github.com/aler9/gortsplib/pkg/base"
"github.com/aler9/gortsplib/pkg/headers"
"github.com/aler9/gortsplib/pkg/liberrors"
"github.com/aler9/rtsp-simple-server/internal/conf"
"github.com/aler9/rtsp-simple-server/internal/externalcmd"
@ -21,16 +19,6 @@ const ( @@ -21,16 +19,6 @@ const (
rtspConnPauseAfterAuthError = 2 * time.Second
)
func isTeardownErr(err error) bool {
_, ok := err.(liberrors.ErrServerSessionTeardown)
return ok
}
func isTerminatedErr(err error) bool {
_, ok := err.(liberrors.ErrServerTerminated)
return ok
}
type rtspConnParent interface {
Log(logger.Level, string, ...interface{})
}
@ -166,11 +154,7 @@ func (c *rtspConn) validateCredentials( @@ -166,11 +154,7 @@ func (c *rtspConn) validateCredentials(
// OnClose is called by rtspServer.
func (c *rtspConn) OnClose(err error) {
if err != io.EOF && !isTeardownErr(err) && !isTerminatedErr(err) {
c.log(logger.Info, "ERR: %v", err)
}
c.log(logger.Info, "closed")
c.log(logger.Info, "closed (%v)", err)
if c.onConnectCmd != nil {
c.onConnectCmd.Close()

5
internal/core/rtsp_server.go

@ -13,6 +13,7 @@ import ( @@ -13,6 +13,7 @@ import (
"github.com/aler9/gortsplib"
"github.com/aler9/gortsplib/pkg/base"
"github.com/aler9/gortsplib/pkg/headers"
"github.com/aler9/gortsplib/pkg/liberrors"
"github.com/aler9/rtsp-simple-server/internal/conf"
"github.com/aler9/rtsp-simple-server/internal/logger"
@ -298,7 +299,7 @@ func (s *rtspServer) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionCloseCt @@ -298,7 +299,7 @@ func (s *rtspServer) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionCloseCt
s.mutex.Unlock()
if se != nil {
se.OnClose()
se.OnClose(ctx.Error)
}
}
@ -412,7 +413,7 @@ func (s *rtspServer) OnAPIRTSPSessionsKick(req apiRTSPSessionsKickReq) apiRTSPSe @@ -412,7 +413,7 @@ func (s *rtspServer) OnAPIRTSPSessionsKick(req apiRTSPSessionsKickReq) apiRTSPSe
if se.ID() == req.ID {
se.Close()
delete(s.sessions, key)
se.OnClose()
se.OnClose(liberrors.ErrServerTerminated{})
return apiRTSPSessionsKickRes{}
}
}

4
internal/core/rtsp_session.go

@ -101,7 +101,7 @@ func (s *rtspSession) log(level logger.Level, format string, args ...interface{} @@ -101,7 +101,7 @@ func (s *rtspSession) log(level logger.Level, format string, args ...interface{}
}
// OnClose is called by rtspServer.
func (s *rtspSession) OnClose() {
func (s *rtspSession) OnClose(err error) {
if s.ss.State() == gortsplib.ServerSessionStateRead {
if s.onReadCmd != nil {
s.onReadCmd.Close()
@ -120,7 +120,7 @@ func (s *rtspSession) OnClose() { @@ -120,7 +120,7 @@ func (s *rtspSession) OnClose() {
s.path = nil
}
s.log(logger.Info, "closed")
s.log(logger.Info, "closed (%v)", err)
}
// OnAnnounce is called by rtspServer.

Loading…
Cancel
Save