mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-09-27 04:36:12 +08:00
Fix deadlock on write to track channel
This commit is contained in:
@@ -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()
|
||||||
|
Reference in New Issue
Block a user