From 16407ea180bb4e3ce2cced392ca78ce415d4a1a3 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Mon, 9 May 2022 13:28:56 +0530 Subject: [PATCH] Change state to `JOINED` before sending `JoinResponse` (#674) * Send room metadata as long as participant is not disconnected * Change state to JOINED before sending join response --- pkg/rtc/participant.go | 3 --- pkg/rtc/participant_signal.go | 4 ++++ pkg/sfu/streamtrackermanager.go | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pkg/rtc/participant.go b/pkg/rtc/participant.go index 004a4fa79..fe514ce84 100644 --- a/pkg/rtc/participant.go +++ b/pkg/rtc/participant.go @@ -502,9 +502,6 @@ func (p *ParticipantImpl) HandleOffer(sdp webrtc.SessionDescription) (answer web } } - if p.State() == livekit.ParticipantInfo_JOINING { - p.updateState(livekit.ParticipantInfo_JOINED) - } prometheus.ServiceOperationCounter.WithLabelValues("answer", "success", "").Add(1) return diff --git a/pkg/rtc/participant_signal.go b/pkg/rtc/participant_signal.go index a15227067..9a2d7242d 100644 --- a/pkg/rtc/participant_signal.go +++ b/pkg/rtc/participant_signal.go @@ -37,6 +37,10 @@ func (p *ParticipantImpl) SendJoinResponse( iceServers []*livekit.ICEServer, region string, ) error { + if p.State() == livekit.ParticipantInfo_JOINING { + p.updateState(livekit.ParticipantInfo_JOINED) + } + // send Join response return p.writeMessage(&livekit.SignalResponse{ Message: &livekit.SignalResponse_Join{ diff --git a/pkg/sfu/streamtrackermanager.go b/pkg/sfu/streamtrackermanager.go index 51f2bcb08..995133895 100644 --- a/pkg/sfu/streamtrackermanager.go +++ b/pkg/sfu/streamtrackermanager.go @@ -290,7 +290,7 @@ func (s *StreamTrackerManager) addAvailableLayer(layer int32) { layers := s.availableLayers s.lock.Unlock() - s.logger.Debugw("available layers changed - layer seen", "layers", layers) + s.logger.Debugw("available layers changed - layer seen", "added", layer, "layers", layers) if s.onAvailableLayersChanged != nil { s.onAvailableLayersChanged(layers) @@ -309,7 +309,7 @@ func (s *StreamTrackerManager) removeAvailableLayer(layer int32) { s.availableLayers = newLayers s.lock.Unlock() - s.logger.Debugw("available layers changed - layer gone", "layers", newLayers) + s.logger.Debugw("available layers changed - layer gone", "removed", layer, "layers", newLayers) // need to immediately switch off unavailable layers if s.onAvailableLayersChanged != nil {