mirror of
https://github.com/livekit/livekit.git
synced 2026-07-29 16:19:35 +00:00
Return early if already subscribed. (#1377)
* Return early if already subscribed. When already subscribed, returned `subTrack` is nil. Return early, but do not return an error. * check for nil subTrack * check for nil as well
This commit is contained in:
@@ -429,17 +429,21 @@ func (m *SubscriptionManager) subscribe(s *trackSubscription) error {
|
||||
// ignore already subscribed error
|
||||
return err
|
||||
}
|
||||
subTrack.OnClose(func(willBeResumed bool) {
|
||||
m.handleSubscribedTrackClose(s, willBeResumed)
|
||||
})
|
||||
subTrack.AddOnBind(func() {
|
||||
s.setBound()
|
||||
s.maybeRecordSuccess(m.params.Telemetry, m.params.Participant.ID())
|
||||
})
|
||||
s.setSubscribedTrack(subTrack)
|
||||
if err == nil && subTrack != nil { // subTrack could be nil if already subscribed
|
||||
subTrack.OnClose(func(willBeResumed bool) {
|
||||
m.handleSubscribedTrackClose(s, willBeResumed)
|
||||
})
|
||||
subTrack.AddOnBind(func() {
|
||||
s.setBound()
|
||||
s.maybeRecordSuccess(m.params.Telemetry, m.params.Participant.ID())
|
||||
})
|
||||
s.setSubscribedTrack(subTrack)
|
||||
|
||||
if subTrack.NeedsNegotiation() {
|
||||
m.params.Participant.Negotiate(false)
|
||||
if subTrack.NeedsNegotiation() {
|
||||
m.params.Participant.Negotiate(false)
|
||||
}
|
||||
|
||||
go m.params.OnTrackSubscribed(subTrack)
|
||||
}
|
||||
|
||||
// add mark the participant as someone we've subscribed to
|
||||
@@ -456,8 +460,6 @@ func (m *SubscriptionManager) subscribe(s *trackSubscription) error {
|
||||
pTracks[s.trackID] = struct{}{}
|
||||
m.lock.Unlock()
|
||||
|
||||
go m.params.OnTrackSubscribed(subTrack)
|
||||
|
||||
if changedCB != nil && firstSubscribe {
|
||||
go changedCB(publisherID, true)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user