From f857501780d23284038ca94c2d6a7ee02dda41fe Mon Sep 17 00:00:00 2001 From: arjunshajitech Date: Fri, 17 Apr 2026 00:14:14 +0530 Subject: [PATCH] Parse rtp extension from padding only empty packet --- rtptransceiver.go | 8 +++----- rtptransceiver_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/rtptransceiver.go b/rtptransceiver.go index d3dcfa79..130a6859 100644 --- a/rtptransceiver.go +++ b/rtptransceiver.go @@ -432,12 +432,10 @@ func handleUnknownRTPPacket( return mid, rid, rsid, false, err } - if rp.Padding && len(rp.Payload) == 0 { - return mid, rid, rsid, true, nil - } + isPaddingOnlyPacket := rp.Padding && len(rp.Payload) == 0 if !rp.Header.Extension { - return mid, rid, rsid, false, nil + return mid, rid, rsid, isPaddingOnlyPacket, nil } if payload := rp.GetExtension(midExtensionID); payload != nil { @@ -452,5 +450,5 @@ func handleUnknownRTPPacket( rsid = string(payload) } - return mid, rid, rsid, false, nil + return mid, rid, rsid, isPaddingOnlyPacket, nil } diff --git a/rtptransceiver_test.go b/rtptransceiver_test.go index 28ed1183..0cc6e743 100644 --- a/rtptransceiver_test.go +++ b/rtptransceiver_test.go @@ -273,3 +273,35 @@ func Test_RTPTransceiver_UnattachedRTX(t *testing.T) { closePairNow(t, offerPC, answerPC) } + +func Test_ParseExtensionFromPaddingOnlyPacket(t *testing.T) { + buf := []byte{ + 176, 114, 15, 39, 0, 0, 0, 0, 209, 108, 221, 2, 190, + 222, 0, 2, 64, 49, 176, 102, 49, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + } + mid, rid, rsid, paddingOnly, err := handleUnknownRTPPacket( + buf, uint8(4), + uint8(10), + uint8(11), + ) + assert.NoError(t, err) + + assert.Equal(t, mid, "1") + assert.Equal(t, rid, "") + assert.Equal(t, rsid, "f") + assert.Equal(t, paddingOnly, true) +}