]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_rtp_asterisk: Count a roll-over of the sequence number even on lost packets. 22/3222/1
authorAlexander Traud <pabstraud@compuserve.com>
Mon, 18 Jul 2016 10:13:25 +0000 (12:13 +0200)
committerAlexander Traud <pabstraud@compuserve.com>
Mon, 18 Jul 2016 10:47:06 +0000 (05:47 -0500)
With this change, the initial RTP sequence number is randomly chosen not between
0 and 65535 (0xffff) but 0 and 32767 (0x7fff). This assures, the roll-over
counter (ROC) synchronization is not lost for sRTP, when the very first RTP
packets get lost; see http://srtp.sourceforge.net/faq.html#Q6

ASTERISK-26207 #close

Change-Id: I9a527e3aa3ce8f3becc5131d7ba32b57b5845464

res/res_rtp_asterisk.c

index d60440e8f661cd816bd2069e0788a4c17fa7b5d0..3223cc9691a9a3e6793bbbb02354fbdfa5d1a1b5 100644 (file)
@@ -2536,7 +2536,7 @@ static int ast_rtp_new(struct ast_rtp_instance *instance,
 
        /* Set default parameters on the newly created RTP structure */
        rtp->ssrc = ast_random();
-       rtp->seqno = ast_random() & 0xffff;
+       rtp->seqno = ast_random() & 0x7fff;
        rtp->strict_rtp_state = (strictrtp ? STRICT_RTP_LEARN : STRICT_RTP_OPEN);
        if (strictrtp) {
                rtp_learning_seq_init(&rtp->rtp_source_learn, (uint16_t)rtp->seqno);