fix track.unbind panic (#634)

Fix #633

Here the signalCh could have been closed by another goroutine, we should
use returned signalCh from `track.removeActivePeerConnection()` to close
the channel.

Actually, I don't know why we need to close the signalCh, we're using it
to send over the doneCh, why ever close it?
This commit is contained in:
Jackie Li
2025-06-13 06:31:00 +01:00
committed by GitHub
parent d90220699e
commit a45a5e50cd
+4 -2
View File
@@ -203,8 +203,10 @@ func (track *baseTrack) bind(ctx webrtc.TrackLocalContext, specializedTrack Trac
encodedReader.Close()
// When there's another call to unbind, it won't block since we remove the current ctx from active connections
track.removeActivePeerConnection(ctx.ID())
close(signalCh)
signalCh := track.removeActivePeerConnection(ctx.ID())
if signalCh != nil {
close(signalCh)
}
if doneCh != nil {
close(doneCh)
}