diff --git a/examples/proxy/server.go b/examples/proxy/server.go index d7ee5235..d308f207 100644 --- a/examples/proxy/server.go +++ b/examples/proxy/server.go @@ -11,7 +11,7 @@ import ( type server struct { s *gortsplib.Server - mutex sync.Mutex + mutex sync.RWMutex stream *gortsplib.ServerStream } @@ -52,8 +52,8 @@ func (s *server) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionCloseCtx) { func (s *server) OnDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx) (*base.Response, *gortsplib.ServerStream, error) { log.Printf("describe request") - s.mutex.Lock() - defer s.mutex.Unlock() + s.mutex.RLock() + defer s.mutex.RUnlock() // stream is not available yet if s.stream == nil { @@ -71,8 +71,8 @@ func (s *server) OnDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx) (*base.Re func (s *server) OnSetup(ctx *gortsplib.ServerHandlerOnSetupCtx) (*base.Response, *gortsplib.ServerStream, error) { log.Printf("setup request") - s.mutex.Lock() - defer s.mutex.Unlock() + s.mutex.RLock() + defer s.mutex.RUnlock() // stream is not available yet if s.stream == nil { diff --git a/examples/server-auth/main.go b/examples/server-auth/main.go index 1104b580..077871f5 100644 --- a/examples/server-auth/main.go +++ b/examples/server-auth/main.go @@ -30,7 +30,7 @@ const ( type serverHandler struct { s *gortsplib.Server - mutex sync.Mutex + mutex sync.RWMutex stream *gortsplib.ServerStream publisher *gortsplib.ServerSession } @@ -78,8 +78,8 @@ func (sh *serverHandler) OnDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx) ( }, nil, liberrors.ErrServerAuth{} } - sh.mutex.Lock() - defer sh.mutex.Unlock() + sh.mutex.RLock() + defer sh.mutex.RUnlock() // no one is publishing yet if sh.stream == nil { @@ -147,8 +147,8 @@ func (sh *serverHandler) OnSetup(ctx *gortsplib.ServerHandlerOnSetupCtx) (*base. } } - sh.mutex.Lock() - defer sh.mutex.Unlock() + sh.mutex.RLock() + defer sh.mutex.RUnlock() // no one is publishing yet if sh.stream == nil { diff --git a/examples/server-tls/main.go b/examples/server-tls/main.go index 03a899ec..87b75fb0 100644 --- a/examples/server-tls/main.go +++ b/examples/server-tls/main.go @@ -20,7 +20,7 @@ import ( type serverHandler struct { s *gortsplib.Server - mutex sync.Mutex + mutex sync.RWMutex stream *gortsplib.ServerStream publisher *gortsplib.ServerSession } @@ -59,8 +59,8 @@ func (sh *serverHandler) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionClo func (sh *serverHandler) OnDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx) (*base.Response, *gortsplib.ServerStream, error) { log.Printf("describe request") - sh.mutex.Lock() - defer sh.mutex.Unlock() + sh.mutex.RLock() + defer sh.mutex.RUnlock() // no one is publishing yet if sh.stream == nil { @@ -108,8 +108,8 @@ func (sh *serverHandler) OnAnnounce(ctx *gortsplib.ServerHandlerOnAnnounceCtx) ( func (sh *serverHandler) OnSetup(ctx *gortsplib.ServerHandlerOnSetupCtx) (*base.Response, *gortsplib.ServerStream, error) { log.Printf("setup request") - sh.mutex.Lock() - defer sh.mutex.Unlock() + sh.mutex.RLock() + defer sh.mutex.RUnlock() // no one is publishing yet if sh.stream == nil { diff --git a/examples/server/main.go b/examples/server/main.go index 5c875cc3..3f94225b 100644 --- a/examples/server/main.go +++ b/examples/server/main.go @@ -19,7 +19,7 @@ import ( type serverHandler struct { s *gortsplib.Server - mutex sync.Mutex + mutex sync.RWMutex stream *gortsplib.ServerStream publisher *gortsplib.ServerSession } @@ -58,8 +58,8 @@ func (sh *serverHandler) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionClo func (sh *serverHandler) OnDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx) (*base.Response, *gortsplib.ServerStream, error) { log.Printf("describe request") - sh.mutex.Lock() - defer sh.mutex.Unlock() + sh.mutex.RLock() + defer sh.mutex.RUnlock() // no one is publishing yet if sh.stream == nil { @@ -107,8 +107,8 @@ func (sh *serverHandler) OnAnnounce(ctx *gortsplib.ServerHandlerOnAnnounceCtx) ( func (sh *serverHandler) OnSetup(ctx *gortsplib.ServerHandlerOnSetupCtx) (*base.Response, *gortsplib.ServerStream, error) { log.Printf("setup request") - sh.mutex.Lock() - defer sh.mutex.Unlock() + sh.mutex.RLock() + defer sh.mutex.RUnlock() // no one is publishing yet if sh.stream == nil {