]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_rtp_asterisk: Fix crash when RTCP is not available during SSRC change
authorMatthew Jordan <mjordan@digium.com>
Tue, 22 Oct 2013 23:01:38 +0000 (23:01 +0000)
committerMatthew Jordan <mjordan@digium.com>
Tue, 22 Oct 2013 23:01:38 +0000 (23:01 +0000)
In r400089, a patch was put in to correct erroneous RTCP statistic resets.
Unfortunately, ast_rtp_read can be called on an RTP instance that does not
have RTCP information. This patch prevents that crash by only resetting
the statistics if we do actually have an RTCP instance.

(issue AST-1174)

(closes issue ASTERISK-22667)
Reported by: John Bigelow
........

Merged revisions 401445 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 401446 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/11.2@401449 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_rtp_asterisk.c

index 5b422d87882b427806d3101a5d885ba898efad2d..b7909523d993011119a48d7a425219e9417c2b0d 100644 (file)
@@ -3599,10 +3599,12 @@ static struct ast_frame *ast_rtp_read(struct ast_rtp_instance *instance, int rtc
                rtp->rxcount = 0;
                rtp->cycles = 0;
                rtp->lastrxseqno = 0;
-               rtp->rtcp->expected_prior = 0;
-               rtp->rtcp->received_prior = 0;
                rtp->last_seqno = 0;
                rtp->last_end_timestamp = 0;
+               if (rtp->rtcp) {
+                       rtp->rtcp->expected_prior = 0;
+                       rtp->rtcp->received_prior = 0;
+               }
        }
 
        rtp->rxssrc = ssrc;