Skip to content
Snippets Groups Projects
Commit c3b1d8f8 authored by Kinsey Moore's avatar Kinsey Moore
Browse files

res_rtp_multicast: Ensure SSRC is set properly

This fixes a bug where the SSRC field on multicast RTP can be stuck at
0 which can cause problems for endpoints trying to make sense of
incoming streams.

(closes issue ASTERISK-22567)
Reported by: Simone Camporeale
Patches:
    22567_res_mulitcast_ssrc.patch uploaded by Simone Camporeale (License 6536)
........

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

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

Merged revisions 400395 from http://svn.asterisk.org/svn/asterisk/branches/12


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@400397 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent 3578bc30
No related branches found
No related tags found
No related merge requests found
...@@ -260,15 +260,15 @@ static int multicast_rtp_write(struct ast_rtp_instance *instance, struct ast_fra ...@@ -260,15 +260,15 @@ static int multicast_rtp_write(struct ast_rtp_instance *instance, struct ast_fra
/* Construct an RTP header for our packet */ /* Construct an RTP header for our packet */
rtpheader = (unsigned char *)(f->data.ptr - hdrlen); rtpheader = (unsigned char *)(f->data.ptr - hdrlen);
put_unaligned_uint32(rtpheader, htonl((2 << 30) | (codec << 16) | (multicast->seqno))); put_unaligned_uint32(rtpheader, htonl((2 << 30) | (codec << 16) | (multicast->seqno)));
put_unaligned_uint32(rtpheader + 4, htonl(multicast->lastts));
if (ast_test_flag(f, AST_FRFLAG_HAS_TIMING_INFO)) { if (ast_test_flag(f, AST_FRFLAG_HAS_TIMING_INFO)) {
put_unaligned_uint32(rtpheader + 4, htonl(f->ts * 8)); put_unaligned_uint32(rtpheader + 4, htonl(f->ts * 8));
} } else {
else { put_unaligned_uint32(rtpheader + 4, htonl(multicast->lastts));
put_unaligned_uint32(rtpheader + 8, htonl(multicast->ssrc));
} }
put_unaligned_uint32(rtpheader + 8, htonl(multicast->ssrc));
/* Increment sequence number and wrap to 0 if it overflows 16 bits. */ /* Increment sequence number and wrap to 0 if it overflows 16 bits. */
multicast->seqno = 0xFFFF & (multicast->seqno + 1); multicast->seqno = 0xFFFF & (multicast->seqno + 1);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment