diff options
author | Terry Wilson <twilson@digium.com> | 2010-08-16 20:40:55 +0000 |
---|---|---|
committer | Terry Wilson <twilson@digium.com> | 2010-08-16 20:40:55 +0000 |
commit | 2bd6b8273729f6528cc8d8c9f9b28df2bf72550e (patch) | |
tree | c6354dd11a25a85c45fb15971886bab502785513 | |
parent | fc55d255109f8dc3a6293632191ef2bed27472d3 (diff) |
Merged revisions 282468 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
................
r282468 | twilson | 2010-08-16 12:53:44 -0500 (Mon, 16 Aug 2010) | 30 lines
Merged revisions 282467 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
................
r282467 | twilson | 2010-08-16 12:32:01 -0500 (Mon, 16 Aug 2010) | 23 lines
Merged revisions 282430 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r282430 | twilson | 2010-08-16 12:06:37 -0500 (Mon, 16 Aug 2010) | 16 lines
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/trunk@282502 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | main/channel.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c index 3c64c57a1..c0a37aaa6 100644 --- a/main/channel.c +++ b/main/channel.c @@ -5863,6 +5863,7 @@ int ast_do_masquerade(struct ast_channel *original) struct ast_party_redirecting redirecting; } exchange; struct ast_channel *clonechan, *chans[2]; + struct ast_channel *bridged; struct ast_cdr *cdr; format_t rformat = original->readformat; format_t wformat = original->writeformat; @@ -6185,6 +6186,14 @@ int ast_do_masquerade(struct ast_channel *original) pthread_kill(original->blocker, SIGURG); ast_debug(1, "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); + done: /* it is possible for the clone channel to disappear during this */ if (clonechan) { @@ -6196,6 +6205,7 @@ done: ast_channel_unlock(original); ao2_link(channels, original); } + return 0; } |