]> git.ipfire.org Git - thirdparty/asterisk.git/commit
Change the SSRC by default when our media stream changes
authorTerry Wilson <twilson@digium.com>
Wed, 30 Sep 2009 14:49:11 +0000 (14:49 +0000)
committerTerry Wilson <twilson@digium.com>
Wed, 30 Sep 2009 14:49:11 +0000 (14:49 +0000)
commit96564de25ef0f0708a3d25ef4a12c28cd2e8dbf1
treef65c97c3a71a2daada0530012670d648d3c34478
parent5d982dda6984f5100aaa4c80a1747eccc4c2d4d8
Change the SSRC by default when our media stream changes

Be default, change SSRC when doing an audio stream changes Asterisk doesn't
honor marker bit when reinvited to already-bridged RTP streams,resulting in
far-end stack discarding packets with "old" timestamps that areactually part of
a new stream.  This patch sends AST_CONTROL_SRCUPDATE whenever there is a
reinvite, unless the 'constantssrc' is set to true in sip.conf.

The original issue reported to Digium support detailed the following situation:
ITSP <-> Asterisk 1.4.26.2 <-> SIP-based Application Server Call comes in
fromITSP, Asterisk dials the app server which sends a re-invite back
toAsterisk--not to negotiate to send media directly to the ITSP, but to
indicatethat it's changing the stream it's sending to Asterisk.  The app
servergenerates a new SSRC, sequence numbers, timestamps, and sets the marker
bit on the new stream.  Asterisk passes through the teimstamp of the new stream,
butdoes not reset the SSRC, sequence numbers, or set the marker bit.

When the timestamp on the new stream is older than the timestamp on the
originalstream, the ITSP (which doesn't know there has been any change) discards
the newframes because it thinks they are too old.  This patch addresses this by
changing the SSRC on a stream update unless constantssrc=true is set in
sip.conf.

Review: https://reviewboard.asterisk.org/r/374/

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@221086 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_sip.c
configs/sip.conf.sample
include/asterisk/rtp.h
main/rtp.c