Skip to content

Commit 74e9cb7

Browse files
committed
Check for closed receiver before setting up rid
1 parent f3177f8 commit 74e9cb7

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

peerconnection.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1875,9 +1875,6 @@ func (pc *PeerConnection) handleIncomingSSRC(rtpStream *srtp.ReadStreamSRTP, ssr
18751875
}
18761876

18771877
if rsid != "" {
1878-
receiver.mu.Lock()
1879-
defer receiver.mu.Unlock()
1880-
18811878
return receiver.receiveForRtx(SSRC(0), rsid, streamInfo, readStream, interceptor, rtcpReadStream, rtcpInterceptor)
18821879
}
18831880

rtpreceiver.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,10 @@ func (r *RTPReceiver) receiveForRid(
552552
r.mu.Lock()
553553
defer r.mu.Unlock()
554554

555+
if r.haveClosed() {
556+
return nil, io.EOF
557+
}
558+
555559
for i := range r.tracks {
556560
if r.tracks[i].track.RID() == rid {
557561
r.tracks[i].track.mu.Lock()
@@ -577,7 +581,7 @@ func (r *RTPReceiver) receiveForRid(
577581

578582
// receiveForRtx starts a routine that processes the repair stream.
579583
//
580-
//nolint:cyclop
584+
//nolint:gocognit,cyclop
581585
func (r *RTPReceiver) receiveForRtx(
582586
ssrc SSRC,
583587
rsid string,
@@ -587,6 +591,13 @@ func (r *RTPReceiver) receiveForRtx(
587591
rtcpReadStream *srtp.ReadStreamSRTCP,
588592
rtcpInterceptor interceptor.RTCPReader,
589593
) error {
594+
r.mu.Lock()
595+
defer r.mu.Unlock()
596+
597+
if r.haveClosed() {
598+
return io.EOF
599+
}
600+
590601
var track *trackStreams
591602
if ssrc != 0 && len(r.tracks) == 1 {
592603
track = &r.tracks[0]

0 commit comments

Comments
 (0)