From dd598ef23f78231fa410ee7de63d9a184c72a0d2 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Wed, 10 Dec 2025 11:05:19 +0530 Subject: [PATCH] Release ExtPacket if dependency descriptor or other parsing fails (#4141) --- pkg/sfu/buffer/buffer.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/sfu/buffer/buffer.go b/pkg/sfu/buffer/buffer.go index 045d8b1f1..89e3e2f1f 100644 --- a/pkg/sfu/buffer/buffer.go +++ b/pkg/sfu/buffer/buffer.go @@ -955,6 +955,7 @@ func (b *Buffer) getExtPacket(rtpPacket *rtp.Packet, arrivalTime int64, isBuffer b.createFrameRateCalculator() } } else { + b.ReleaseExtPacket(ep) return nil } } else if ddVal != nil { @@ -970,6 +971,7 @@ func (b *Buffer) getExtPacket(rtpPacket *rtp.Packet, arrivalTime int64, isBuffer vp8Packet := VP8{} if err := vp8Packet.Unmarshal(rtpPacket.Payload); err != nil { b.logger.Warnw("could not unmarshal VP8 packet", err) + b.ReleaseExtPacket(ep) return nil } ep.KeyFrame = vp8Packet.IsKeyFrame @@ -994,6 +996,7 @@ func (b *Buffer) getExtPacket(rtpPacket *rtp.Packet, arrivalTime int64, isBuffer _, err := vp9Packet.Unmarshal(rtpPacket.Payload) if err != nil { b.logger.Warnw("could not unmarshal VP9 packet", err) + b.ReleaseExtPacket(ep) return nil } ep.VideoLayer = VideoLayer{ @@ -1034,6 +1037,7 @@ func (b *Buffer) getExtPacket(rtpPacket *rtp.Packet, arrivalTime int64, isBuffer if ep.DependencyDescriptor == nil { if len(rtpPacket.Payload) < 2 { b.logger.Warnw("invalid H265 packet", nil) + b.ReleaseExtPacket(ep) return nil } ep.VideoLayer = VideoLayer{