From: Terry Wilson Date: Mon, 16 Aug 2010 17:06:37 +0000 (+0000) Subject: Send a SRCCHANGE indication when we masquerade X-Git-Tag: 1.4.36-rc1~3^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c5278fc11157c88dcf4161313925b095afc4c03e;p=thirdparty%2Fasterisk.git Send a SRCCHANGE indication when we masquerade Masquerading a channel means that the src of the audio is potentially changing, so send a SRCCHANGE so that RTP-based media streams can get a new SSRC generated to reflect the change. Original patch by addix (along with lots of testing--thanks!). (closes issue #17007) Reported by: addix Patches: 1001-reset-SSRC-original-channel.diff uploaded by addix (license 1006) srcchange.diff uploaded by twilson (license 396) Tested by: addix, twilson Review: https://reviewboard.asterisk.org/r/862/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@282430 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/channel.c b/main/channel.c index 06f15d1763..bd64c50fa5 100644 --- a/main/channel.c +++ b/main/channel.c @@ -4032,6 +4032,7 @@ int ast_do_masquerade(struct ast_channel *original) void *t_pvt; struct ast_callerid tmpcid; struct ast_channel *clone = original->masq; + struct ast_channel *bridged; struct ast_cdr *cdr; int rformat = original->readformat; int wformat = original->writeformat; @@ -4298,6 +4299,15 @@ int ast_do_masquerade(struct ast_channel *original) pthread_kill(original->blocker, SIGURG); if (option_debug) ast_log(LOG_DEBUG, "Done Masquerading %s (%d)\n", original->name, original->_state); + + if ((bridged = ast_bridged_channel(original))) { + ast_channel_lock(bridged); + ast_indicate(bridged, AST_CONTROL_SRCCHANGE); + ast_channel_unlock(bridged); + } + + ast_indicate(original, AST_CONTROL_SRCCHANGE); + return 0; }