diff --git a/pkg/rtc/mediatrack.go b/pkg/rtc/mediatrack.go index 00f1198d8..1a6130657 100644 --- a/pkg/rtc/mediatrack.go +++ b/pkg/rtc/mediatrack.go @@ -202,7 +202,6 @@ func (t *MediaTrack) AddReceiver(receiver *webrtc.RTPReceiver, track *webrtc.Tra ) wr.SetRTCPCh(t.params.RTCPChan) wr.OnCloseHandler(func() { - t.stopMaxQualityTimer() t.RemoveAllSubscribers() t.MediaTrackReceiver.Close() t.params.Telemetry.TrackUnpublished(context.Background(), t.PublisherID(), t.ToProto(), uint32(track.SSRC())) diff --git a/pkg/rtc/mediatrackreceiver.go b/pkg/rtc/mediatrackreceiver.go index 5b44f1d04..08d4ef074 100644 --- a/pkg/rtc/mediatrackreceiver.go +++ b/pkg/rtc/mediatrackreceiver.go @@ -98,6 +98,8 @@ func (t *MediaTrackReceiver) Close() { onclose := t.onClose t.lock.Unlock() + t.MediaTrackSubscriptions.Close() + for _, f := range onclose { f() } diff --git a/pkg/rtc/mediatracksubscriptions.go b/pkg/rtc/mediatracksubscriptions.go index 933d05fe9..1f7d355ec 100644 --- a/pkg/rtc/mediatracksubscriptions.go +++ b/pkg/rtc/mediatracksubscriptions.go @@ -63,6 +63,10 @@ func NewMediaTrackSubscriptions(params MediaTrackSubscriptionsParams) *MediaTrac return t } +func (t *MediaTrackSubscriptions) Close() { + t.stopMaxQualityTimer() +} + func (t *MediaTrackSubscriptions) OnNoSubscribers(f func()) { t.onNoSubscribers = f }