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:
Raja Subramanian
2023-02-04 13:47:35 +05:30
committed by GitHub
parent add9962655
commit d67cdb6141
+14 -12
View File
@@ -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)
}