Skip to content

Commit 699a995

Browse files
committed
Fix deadlock on write to track channel
1 parent ce02b03 commit 699a995

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

pkg/core/track.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,17 @@ func NewSender(media *Media, codec *Codec) *Sender {
9797
buf: buf,
9898
}
9999
s.Input = func(packet *Packet) {
100-
// writing to nil chan - OK, writing to closed chan - panic
101100
s.mu.Lock()
102-
select {
103-
case s.buf <- packet:
104-
s.Bytes += len(packet.Payload)
105-
s.Packets++
106-
default:
101+
if s.buf != nil {
102+
// unblocked write to channel
103+
select {
104+
case s.buf <- packet:
105+
s.Bytes += len(packet.Payload)
106+
s.Packets++
107+
default:
108+
s.Drops++
109+
}
110+
} else {
107111
s.Drops++
108112
}
109113
s.mu.Unlock()

0 commit comments

Comments
 (0)