fix: various locks in the signaler

This commit is contained in:
Charles
2024-01-15 23:12:13 -08:00
parent 195cd67c90
commit 6851b30ad8
4 changed files with 13 additions and 7 deletions
+6 -4
View File
@@ -130,6 +130,7 @@ func (s *Server) CreateAuthToken(ctx context.Context, request *connect.Request[p
return nil, fmt.Errorf("error creating UUID: %v", err)
}
id = myUUID.String()
s.mu.Unlock()
}
token := &internalpb.AuthToken{
@@ -169,7 +170,6 @@ func (s *Server) ListCameras(ctx context.Context, request *connect.Request[pb.Li
// Optionally, wait_for_update can be set to prevent returning until the Camera has seen the
// session request, populated candidates, and returned a session offer.
func (s *Server) CreateSession(ctx context.Context, request *connect.Request[pb.CreateSessionRequest]) (*connect.Response[pb.Session], error) {
log.Printf("Creating session")
defer log.Printf("Done session")
thisSession := request.Msg.Session
@@ -224,14 +224,14 @@ func (s *Server) PopSession(ctx context.Context, request *connect.Request[pb.Pop
s.mu.Unlock()
var sess *session
tick := time.NewTicker(time.Second * 30)
tick := time.NewTicker(time.Second * 20)
defer tick.Stop()
select {
case sess = <-ch:
// OK
case <-tick.C:
// have them retry
return nil, connect.NewError(connect.CodeDeadlineExceeded, fmt.Errorf("try again"))
return connect.NewResponse(&pb.Session{}), nil
}
if sess == nil {
@@ -253,17 +253,19 @@ func (s *Server) CreateIceMessage(ctx context.Context, request *connect.Request[
req := request.Msg
s.mu.Lock()
defer s.mu.Unlock()
session, ok := s.sessionsById[req.GetSessionIdentifier().GetId()]
if !ok {
s.mu.Unlock()
return nil, status.Errorf(codes.NotFound, "unknown session")
}
if _, ok := s.camerasByHome[authToken.Home]; !ok {
s.mu.Unlock()
return nil, status.Errorf(codes.NotFound, "home %q not found", authToken.Home)
}
_, isCamera := s.camerasByHome[authToken.Home][authToken.Uid]
s.mu.Unlock()
session.createTime = time.Now()
msg := req.GetIceMessage()