diff --git a/pkg/rtc/participant.go b/pkg/rtc/participant.go index 3d8e0e232..081dc7e72 100644 --- a/pkg/rtc/participant.go +++ b/pkg/rtc/participant.go @@ -1962,7 +1962,9 @@ func (p *ParticipantImpl) onSubscriptionError(trackID livekit.TrackID) { } func (p *ParticipantImpl) onAnyTransportNegotiationFailed() { - p.params.Logger.Infow("negotiation failed, starting full reconnect") + if p.TransportManager.SinceLastSignal() < negotiationFailedTimeout { + p.params.Logger.Infow("negotiation failed, starting full reconnect") + } p.IssueFullReconnect(types.ParticipantCloseReasonNegotiateFailed) } diff --git a/pkg/rtc/transportmanager.go b/pkg/rtc/transportmanager.go index 9be12f962..44d3cdd83 100644 --- a/pkg/rtc/transportmanager.go +++ b/pkg/rtc/transportmanager.go @@ -717,3 +717,9 @@ func (t *TransportManager) UpdateLastSeenSignal() { t.lastSignalAt = time.Now() t.lock.Unlock() } + +func (t *TransportManager) SinceLastSignal() time.Duration { + t.lock.RLock() + defer t.lock.RUnlock() + return time.Since(t.lastSignalAt) +}