From 0ff969397db8483aaca55583d05eb54b7ffcc29f Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Wed, 27 Oct 2021 18:55:57 +0200 Subject: [PATCH] server: make errors more clear --- pkg/liberrors/server.go | 26 +++++++++++++------------- serversession.go | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) 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