Fix deadlock on write to track channel

This commit is contained in:
Alex X
2025-04-08 11:33:04 +03:00
parent ce02b03a73
commit 699a995e8c

View File

@@ -97,13 +97,17 @@ func NewSender(media *Media, codec *Codec) *Sender {
buf: buf, buf: buf,
} }
s.Input = func(packet *Packet) { s.Input = func(packet *Packet) {
// writing to nil chan - OK, writing to closed chan - panic
s.mu.Lock() s.mu.Lock()
select { if s.buf != nil {
case s.buf <- packet: // unblocked write to channel
s.Bytes += len(packet.Payload) select {
s.Packets++ case s.buf <- packet:
default: s.Bytes += len(packet.Payload)
s.Packets++
default:
s.Drops++
}
} else {
s.Drops++ s.Drops++
} }
s.mu.Unlock() s.mu.Unlock()