diff --git a/pkg/liberrors/server.go b/pkg/liberrors/server.go index a704449b..54e1c780 100644 --- a/pkg/liberrors/server.go +++ b/pkg/liberrors/server.go @@ -23,12 +23,20 @@ func (e ErrServerSessionNotFound) Error() string { return "session not found" } -// ErrServerSessionTimedOut is an error that can be returned by a server. -type ErrServerSessionTimedOut struct{} +// ErrServerNoUDPPacketsInAWhile is an error that can be returned by a server. +type ErrServerNoUDPPacketsInAWhile struct{} // Error implements the error interface. -func (e ErrServerSessionTimedOut) Error() string { - return "timed out" +func (e ErrServerNoUDPPacketsInAWhile) Error() string { + return "no UDP packets received in a while" +} + +// ErrServerNoRTSPRequestsInAWhile is an error that can be returned by a server. +type ErrServerNoRTSPRequestsInAWhile struct{} + +// Error implements the error interface. +func (e ErrServerNoRTSPRequestsInAWhile) Error() string { + return "no RTSP requests received in a while" } // ErrServerTCPFramesEnable is an error that can be returned by a server. @@ -207,14 +215,6 @@ func (e ErrServerNotAllAnnouncedTracksSetup) Error() string { return "not all announced tracks have been setup" } -// ErrServerNoUDPPacketsRecently is an error that can be returned by a server. -type ErrServerNoUDPPacketsRecently struct{} - -// Error implements the error interface. -func (e ErrServerNoUDPPacketsRecently) Error() string { - return "no UDP packets received (maybe there's a firewall/NAT in between)" -} - // ErrServerLinkedToOtherSession is an error that can be returned by a server. type ErrServerLinkedToOtherSession struct{} @@ -228,7 +228,7 @@ type ErrServerSessionTeardown struct{} // Error implements the error interface. func (e ErrServerSessionTeardown) Error() string { - return "destroyed by a connection" + return "teared down by a request" } // ErrServerSessionLinkedToOtherConn is an error that can be returned by a server. diff --git a/serversession.go b/serversession.go index 64d37fb0..71016f1b 100644 --- a/serversession.go +++ b/serversession.go @@ -315,7 +315,7 @@ func (ss *ServerSession) run() { now := time.Now() lft := atomic.LoadInt64(ss.udpLastFrameTime) if now.Sub(time.Unix(lft, 0)) >= ss.s.ReadTimeout { - return liberrors.ErrServerSessionTimedOut{} + return liberrors.ErrServerNoUDPPacketsInAWhile{} } // in case of PLAY and UDP, timeout happens when no RTSP request arrives @@ -323,7 +323,7 @@ func (ss *ServerSession) run() { *ss.setuppedTransport == TransportUDPMulticast): now := time.Now() if now.Sub(ss.lastRequestTime) >= ss.s.closeSessionAfterNoRequestsFor { - return liberrors.ErrServerSessionTimedOut{} + return liberrors.ErrServerNoRTSPRequestsInAWhile{} } // in case of TCP, there's no timeout until all associated connections are closed