]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
properly strip incoming padded RTP frames (bug #4264)
authorKevin P. Fleming <kpfleming@digium.com>
Sat, 14 May 2005 23:41:12 +0000 (23:41 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Sat, 14 May 2005 23:41:12 +0000 (23:41 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5652 65c4cc65-6c06-0410-ace0-fbb531ad65f3

rtp.c

diff --git a/rtp.c b/rtp.c
index 8c727197b57b376258a6be1854b22fb59cf91c52..9fde8b857b136d049f9fd8faa338029c2068e389 100755 (executable)
--- a/rtp.c
+++ b/rtp.c
@@ -429,6 +429,7 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp)
        int version;
        int payloadtype;
        int hdrlen = 12;
+       int padding;
        int mark;
        int ext;
        int x;
@@ -482,10 +483,17 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp)
                return &null_frame;
        
        payloadtype = (seqno & 0x7f0000) >> 16;
+       padding = seqno & (1 << 29);
        mark = seqno & (1 << 23);
        ext = seqno & (1 << 28);
        seqno &= 0xffff;
        timestamp = ntohl(rtpheader[1]);
+       
+       if (padding) {
+               /* Remove padding bytes */
+               res -= rtp->rawdata[AST_FRIENDLY_OFFSET + res - 1];
+       }
+       
        if (ext) {
                /* RTP Extension present */
                hdrlen += 4;